当前位置: 首页 > 面试题库 >

会话关闭后,如何使用休眠方式访问延迟加载的字段?

沈子实
2023-03-14
问题内容

考虑这种情况:

  • 我已经通过hibernate加载了一个父实体
  • 父级包含子级的集合,这些子项很大且很懒
  • 在此初始加载后,hibernate会话在用户查看父数据时关闭
  • 用户可以选择查看惰性儿童集合的内容
  • 我现在希望加载该收藏集

加载此收藏集的方式/最佳方式是什么?

  • 假设无法进行会话查看,因为只有在用户查看了“父级”并决定查看“子级”之后,才会进行“子级”集合的获取。
  • 这是一项将由基于Web和桌面的客户端远程访问的服务。

谢谢。


问题答案:

我对用户正在查看的内容进行了一些假设,但似乎您只想在用户已经查看了父级并且确实想看到子级的情况下检索子级。

为什么不尝试打开一个新的会话并由父母取回孩子呢?与…类似的东西

criteria = session.createCriteria(Child.class);
criteria.add(Restrictions.eq("parent", parent));
List<Child> children = criteria.list();


 类似资料:
  • 问题内容: 下面的函数是我在Web应用程序中具有的按钮的actionListener,我正在从数据库中的表中删除旧选择的行,并将新行插入数据库中。 我一直在例外:会话关闭!有人可以解释一下如何在hibernate状态下关闭会话(自动吗?)以及如何使用它们。 这是该异常的详细堆栈跟踪: 谢谢, 问题答案: 在Hibernate会话显然配置为基于请求的情况下,您在会话范围内的受管Bean中使用了延迟获

  • 问题内容: 当我按如下方式调用session.begin事务方法时: 然后我得到以下异常消息 造成此错误的原因是什么? 问题答案: 更新: 我想调用并不能保证该会话实际上是打开的。第一次,您应该使用 代替。该建议实际上与您找到的页面一致。 之前: 根据到目前为止的可用信息,我们可以得出结论,错误的原因是会话未打开;-)

  • 问题内容: 我遇到了一个问题,JPA试图在我不想要的时候延迟加载我的数据。从本质上讲,正在发生的事情是我正在使用Service检索一些数据,并且当我将这些数据解析为JSON时,JSON库正在触发hibernate模式以尝试懒惰地加载数据。有什么办法可以阻止这种情况?我在下面给出一个例子。 是否可以将JPA /hibernate设置为不尝试并延迟加载数据? 更新: 我意识到您可以使用FetchTyp

  • 问题内容: 要获得答案,请向下滚动到此内容的末尾… 基本问题与多次询问相同。我有一个带有两个POJO事件和用户的简单程序-一个用户可以拥有多个事件。 用户: 注意:这是一个示例项目。我 真的 很想在这里使用Lazy抓取。 现在我们需要配置spring和hibernate,并有一个简单的basic-db.xml用于加载: 注意:我玩过CustomScopeConfigurer和SimpleThrea

  • 问题内容: 我在spring使用Hibernate。 我有这样的模型班。 它通常可以正常工作,但是Category不会延迟加载,而是在ForumEntry加载后急切加载。 `` 完全没有将getter称为ForumCategory是在ForumTopic之后立即加载的。 这个问题出现在我所有的@ManyToOne关联中。但是,@OneToMany关联会延迟加载。 我正在使用maven2进行构建。这

  • 问题内容: 我相信只有两种使用Hibernate加载对象的方法,即延迟加载和一种渴望加载。延迟加载有其自身的优势,它不会加载很多对象,而只是在需要时才加载它们。我还了解到,如果您想强制为一个对象加载所有子代,则只需调用即可。假设我们有以下对象 假设我们有一些客户在我们的系统中有订单,并且该订单可能不止一个甚至为空。所以我的问题是,在这种情况下始终使用渴望加载会更好吗?我们需要与客户相关的订单的大小