ORMLite 和惰性集合的问题

2024-04-15

我在我的 android 项目中使用 ormlite。我有两节课

@DatabaseTable(tableName = "usershows")
public class UserShow {
    @DatabaseField(id = true)
    private Integer showId;

    @ForeignCollectionField(eager = false)
    private ForeignCollection<Episode> episodes;
    ...
}

@DatabaseTable(tableName = "episodes")
public class Episode {
    @DatabaseField(id = true)
    private Integer episodeId;

    @DatabaseField(foreign = true)
    private UserShow show;
    ...
}

我正在保存我的 UserShows 对象,例如在例子中 http://ormlite.svn.sourceforge.net/viewvc/ormlite/ormlite-jdbc/trunk/src/test/java/com/j256/ormlite/examples/foreignCollection/

UserShow show = new UserShow();
userShowDao.create(show);

for (Episode e: eps) {
    e.setShow(show);
    episodeDao.create(e); 
} 

UserShow 对象有一个外部惰性集合剧集,但是当我尝试获取所有 userShows 时:

shows = userShowsDao().queryForAll();

我正在获取带有剧集集合的所有节目对象。为什么会出现这种情况?集合是惰性的,我必须获取 null 或其他内容,但没有 Episode 对象的集合。如何让这个集合真正变得懒惰?如果 ORMLite 能够在没有延迟集合的情况下获取对象并在真正需要时进行初始化,那可能会很酷。例如作为Hibernate.initialize method.

Thanks!


惰性集合已经过良好的测试,并且被许多其他人使用,因此尽管它可能存在错误,但您更有可能被惰性集合类欺骗。

当每个UserShow对象是从 DAO 中检索的,episodes不会为空,而是会被设置为一个实例LazyForeignCollection。但是,不会进行任何其他查询,也不会出现任何问题Episode集合中包含的数据。如果您随后调用集合上的方法之一,例如userShow.getEpisodes().iterator(),那么一个separate此时进行查询以允许您迭代该节目的剧集。这就是惰性集合的工作原理。

如果您仍然认为惰性集合不起作用,请向我们展示您如何确定节目具有剧集数据。要查看在何处执行哪些查询,您可以启用使用 ORMLite 进行 Android 日志记录 http://ormlite.com/docs/android-logging.


Edit:

事实证明,@Georgy 正在使用调试器来调查该集合。调试器很可能调用相同的iterator() or toArray()导致在该时刻发出集合查询的方法。因此,在调试器请求之前,集合中没有任何剧集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORMLite 和惰性集合的问题 的相关文章

  • JKS、BKS 和 PKCS12 文件格式

    我正在设置一个无头服务器 该服务器使用用户提供的数据 JS CSS HTML 密钥库 为 Android 构建 Phonegap 混合应用程序 我想进行一些基本的客户端检查 以确保上传的密钥库有效 对于 JKS 文件 我发现可以通过确保提供
  • WifiConfiguration 在 Lollipop 中启用网络

    我正在研究 Wifi 项目 有一个模块可以让用户以编程方式加入 wifi 在 kitkat 及以下版本中它可以成功工作 但在 Lollipop 中它不起作用 这是代码 WifiManager wifiManager WifiManager
  • GCM 通知的自定义 UI

    In GCM Docs http developer android com google gcm gcm html其给定 它不提供任何内置用户界面或其他处理 消息数据 GCM 只是将收到的原始消息数据直接传递给 Android 应用程序
  • Android 的 GCM 推送通知[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 我尝试学习 GCM 并制作一个测试应用程序 该应用程序将通过 androids 官方网站获取 an
  • 关于android Sqlite在多进程情况下的安全性

    在我的应用程序中 存在多个进程 并且在每个进程中 我需要访问同一个SQLite数据库 当然 这意味着超过2个线程 所以我不仅担心SQLite的线程安全性 还担心SQLite的线程安全性 还有过程安全 这种情况的一种解决方案是使用内容提供者
  • 卡片视图工具栏

    我有一个包含 CardView 的 RecyclerView 我想向每个 CardView 添加一个工具栏 其外观和行为类似于主工具栏 图标 标题 按钮 按钮 菜单 我从这里看到了 http blog grafixartist com cr
  • API 31 上是否有官方方法来提供文件关联,可能使用 pathSuffix/pathAdvancedPattern?

    背景 现代桌面操作系统上的一个众所周知的功能是能够处理文件 允许用户从文件管理器和其他应用程序中打开它们 作为 文件关联 配置 问题 到目前为止 对于用户和开发人员来说 在 Android 上设置文件类型关联并不是一件很方便的事情 在 An
  • 如何在发布版本中使用 Zebra EMDK?

    所以我有一台 Zebra MC330M 设备 我之前创建了一个应用程序 我想使用 PDA 内置的条形码扫描仪 如果在调试模式下运行我的应用程序 一切正常 我可以读取条形码 但是如果我创建暂存或释放版本 apk 则条形码读取器不活动 因此如果
  • 如何区分ActionBarSherlock中的两次菜单项点击?

    我最近一直在使用 ActionBarSherlock 并按照各种教程 我编写了这段代码来将项目添加到操作栏 Override public boolean onCreateOptionsMenu Menu menu menu add Ref
  • 使用 appcelerator titan 在 android 中后退按钮退出应用程序

    我是钛开发的新手 在本机 android 中 如果我们按下后退按钮 则仅当前活动将被关闭 并且它将返回到上一个活动 但是当我使用 Titanium 在 Android 中按下后退按钮时 它会从应用程序退出 我怎样才能改变这种行为 有两种类型
  • 如何从另一个应用程序向一个应用程序添加视图

    我的应用程序叫做我的好应用 MyNiceApp 主要只是一个加载视图的核心coreView在主活动中onCreate coreView由用户根据需要下载的其他插件的视图填充 我定义了核心视图上的各个区域 这些区域可以通过 MyNiceApp
  • 如何使用RecyclerView.State保存RecyclerView滚动位置?

    我有一个关于 Android 的问题RecyclerView State http developer android com reference android support v7 widget RecyclerView State h
  • GSON:自定义对象反序列化

    好吧 我编辑了这个问题 因为它不够清楚 Edit 2 更新了 JSON 文件 我在 Android 应用程序中使用 GSON 我需要解析来自服务器的 JSON 文件 而且有点太复杂了 我不想让我的对象结构太重 所以我想简化内容 所以我的对象
  • 如何在android中的应用程序小部件中找到哪个按钮被点击?

    我想设计一个简单的应用程序小部件 它有两个文本视图和两个用于上一个 下一个的按钮 我很难处理应用程序小部件中的按钮单击 实际上我的愿望是 如果用户单击上一个按钮 我想显示以前的值 如果用户单击下一个按钮 我想显示数据库中的下一个值 如何知道
  • 首选项活动中的广告“没有足够的空间来显示广告!需要:<480, 75>,拥有:<432, 1073741823>”

    我试图在偏好活动中展示广告 但它从未出现 Logcat 始终显示消息 没有足够的空间来显示广告 想要 有 这就是我制作广告的方式 我对广告有自定义偏好 public class AdmobPreference extends Prefere
  • 在 Android 5 上支持 BLE 外设角色的芯片组 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Android 5 0 Lollipop 引入的新 BLE 外设模式将不会在 Nexus 4 5 或 7 上启用 https code
  • Android Youtube API 可用吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有适用于 Android 的 YouTube API 吗 如果不是 除了通过网络浏览器之外 如何从 Yo
  • 当创建 Android Jetpack Compose AndroidView 的参数发生变化时,如何替换它?

    我有一个应用程序 显示封装在其中的几个不同视图AndroidView 在下面重现的简单示例中 这些只是TextView实例 问题是更改文本 在本例中循环显示三个不同的值 似乎不会更新应用程序显示的内容 sealed class AppVie
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • RecyclerView 适配器的 Kotlin 泛型

    我正在尝试编写一个通用的 recyclerview 适配器 我找到了几个例子 然而 仍然无法弄清楚如何实现通用适配器 我写的代码是 open abstract class BaseAdapter

随机推荐

  • 将大型 SVN 存储库迁移到 git

    我有一个大型 SVN 存储库 大约 140GB 其中包含许多项目 并且不遵循 svn 推荐的目录结构 从所有这些数据 包括二进制文件 发布版本和依赖项 来看 我真正关心的是特定路径 与其他所有数据相比 该路径实际上具有非常小的历史记录 到目
  • 您将如何设计数据库以允许用户定义模式[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如果您必须创建一个应用程序 例如博客应用程序 那么创建数据库模式相对简单 你必须创建一些表 tblPosts tblAttachments tb
  • BigQuery中有新数据时触发云功能

    我想在新数据导入 BigQuery 表时触发 Cloud Function 理想情况下 我想提取已插入的所有行 一列是 ISIN 这可能吗 如何实现 2022 年 6 月更新 第二代 Cloud Functions 支持Eventarc h
  • Razor _Layout.cshtml 中的嵌入代码

    我正在开发一个 MVC3 Razor Web 应用程序 它从 java 内容管理系统获取其页面装饰 由于此装饰由每个页面共享 我已将 CMS 内容的检索放入 Layout cshtml 文件中 但我对我实现的代码并不完全满意 The fir
  • 使用 codeigniter 活动记录获取单个字段输出的值

    以下函数应该从数据库中读取给定资产代码的名称 但它会触发错误 尝试获取非对象的属性 function sban name asset this gt db gt select name this gt db gt from asset ty
  • 如何从 Magento 的报价中删除项目?

    在结账过程中 我有时想以编程方式从会话的报价中删除项目 所以我尝试了这段代码 quote Mage getSingleton checkout session gt getQuote all quote items quote gt get
  • 阅读时的 mv()

    在 Linux ext3 文件系统上 如果在读取文件时对同一个文件 文件描述符 调用 mv 会发生什么情况 这实际上是一道考试题 我只能说 CPU 捕获 OS 进行中断处理 等等等等 如果操作系统人员可以帮助我 我将不胜感激 D Linux
  • 使用 join/awk/sed 合并 CSV 文件

    您能帮我找到 bash 命令 该命令会将以下 cvs 文件 template csv file1 csv file2 csv file3 csv fileX csv 加入 合并到 ouput csv 中吗 对于 template csv 中
  • 在 postgresql 中查找主机名[重复]

    这个问题在这里已经有答案了 是否可以像 MS SQL Server 那样使用简单的语法 SELECT HOST NAME 在 postgresql 9 3 2 中 我读过一些文章但没有结果 不 默认版本没有这个功能 然而 使用新的本机函数扩
  • 从一个 python 脚本输出检查过期日期的代码

    我有一个预制的 Python 脚本 可以在地址服务器中调用 C 脚本 该脚本的输出是 Build Number 2381 Database Date 2015 07 15 Database Expiration Date 10 31 201
  • 如何使用键值编码判断对象是否存在键?

    我想测试iPhone SDK中的对象是否具有可写的 property 一种可能的方法是检查 valueForKey 方法 但这看起来相当不优雅 Example try id value instance valueForKey myProp
  • jQuery 选择器错误?组合选择器与简单选择器和 find()

    我的情况很尴尬 我有这样的事情 div div
  • CoreData 按属性划分的唯一对象

    我有一个图表 其中包含一种名为 消息 的对象 一条消息可以有子项 因此该图是一棵树 图上的每个对象都包含一个属性值 这是一种 UUID 全局唯一 因此存储不能包含具有相同 UUID 的多条消息 此 uuid 是从消息数据中获取的字符串 因此
  • 使用PBKDF2 java解密和加密

    有没有办法解密PBKDF2java中的密码 Java有实现PBKDF2算法为PBKDF2WithHmacSHA1 我得到了为密码创建哈希值的代码 我参考了下面的链接来了解哈希技术 http howtodoinjava com securit
  • Rails 5 - 找不到生成器“rspec:安装”

    在我的 Rails 5 0 0 应用程序中 我已将以下内容添加到我的 Gemfile 中 group development test do gem byebug platform mri gem rspec rails gt 3 5 gt
  • 使用 React 测试库提交后测试重定向

    我正在尝试测试登录组件 具体来说 它会在成功登录时重定向 手动测试时效果很好 但在我的测试中 它从不进行重定向 因此找不到 注销 链接 test successfully logs the in the user async gt cons
  • 使用 INDY 检测远程服务器上文件的 Mime 类型

    我一直在使用 Synapse 库从互联网下载文件 但我最近将我的应用程序转换为使用 INDY 并且我缺少 Synapse 库中更好的功能之一 即能够轻松获取我在将其保存到本地计算机之前从服务器下载的文件 INDY 是否具有此功能 如果有 我
  • Excel 中的数组常量

    我在单元格 A1 中定义了一个数组常量为 1 2 3 这显示为 1 数组中的第一个值 我想让公式 SUM A1 返回 6 但是 SUM 使用 A1 作为单单元数组 而不是 A1 中包含的数组常量 因此 SUM A1 返回 1 同样 我希望
  • 使用脚本更新 Google 电子表格数据透视表范围

    如何使用脚本编辑 Google 文档电子表格中数据透视表的数据范围 Or 是否可以对数据透视表范围使用命名范围 不幸的是 此时 2012 年 7 月 31 日 我相信答案是 你不能 和 不 我可以建议的唯一解决方法是 1 使用 QUERY
  • ORMLite 和惰性集合的问题

    我在我的 android 项目中使用 ormlite 我有两节课 DatabaseTable tableName usershows public class UserShow DatabaseField id true private I