【发布时间】:2014-06-18 05:50:46
【问题描述】:
我想在一对多字段的某些条件下使用条件。
简单介绍一下我的模型,一个item 有多个options。
因为我想通过过滤的options 获取item,并将其传递给JSON Parser(没有会话),所以我必须在我(查询它时获取选项。
在向选项添加限制之前,我已经编写了如下代码,它对我来说很好。
Item item = (Item)session.createCriteria(Item.class)
.setFetchMode("options", FetchMode.JOIN)
.add(Restrictions.eq("id", id))
.uniqueResult();
但是当我对options添加限制时,它会发生错误(确切地说,当被调用的函数试图访问项目时,搜索工作正常。)
Item item = (Item)session.createCriteria(Item.class)
.setFetchMode("options", FetchMode.JOIN)
.add(Restrictions.eq("id", id))
.createCriteria("options").add(Restrictions.eq("status", ItemStatus.ABLE))
.uniqueResult();
一个错误是:
failed to lazily initialize a collection of role: options, could not initialize proxy - no Session
我在子条件的末尾添加了 setFetchMode,结果是一样的。
发生了什么!?能说说解决办法吗?
【问题讨论】:
-
我尝试删除
.setFetchMode("options", FetchMode.JOIN)然后我也得到了正确的结果。 -
@Amogh 搜索数据不是我的问题,我的问题是在会话关闭后访问
options。 -
@Amogh 我设置获取模式的原因是为了在会话关闭后访问
options。 -
@Amogh 但是当我向
options添加限制时,出现错误。虽然我已将获取模式设置为加入选项。 -
设置获取模式不用于在会话关闭后访问该关联。它讲述了如何获取关联。
标签: hibernate hibernate-criteria