【发布时间】:2012-11-07 13:37:23
【问题描述】:
我必须修改一个大型 Hibernate DetachedCriteria 查询来获取一些额外的关联。
我的对象图类似于下面的结构,我想获取与每辆汽车相关的销售额:
<class name="Showroom" table="showroom">
...
<bag name="cars" lazy="false">
<one-to-many class="Car" />
</bag>
...
</class>
<class name="Car" table="car">
...
<set name="sales" lazy="true">
<one-to-many class="Sale" />
</set>
...
</class>
我想做的是这样的:
DetachedCriteria criteria = DetachedCriteria.forClass(Showroom.class);
// ... Existing criteria query code ...
criteria.setFetchMode("cars.sales", FetchMode.JOIN);
但是 setFetchMode 中的 associationPath 参数似乎忽略了点符号,我得到了 LazyInitializationException:
原因:org.hibernate.LazyInitializationException: 懒惰失败 初始化角色集合:Car.sales,没有会话或会话已关闭
我已经四处搜索,到目前为止没有找到任何示例或信息。 Hibernate documentation 没有提供有关如何获取嵌套关联的示例,Javadoc for setFetchMode 似乎表明我的点符号方法应该有效...
任何帮助将不胜感激。
【问题讨论】:
标签: java database hibernate detachedcriteria