Java HibernateCriteria setFetch不工作
我有这样的标准Java HibernateCriteria setFetch不工作,java,hibernate,criteria,Java,Hibernate,Criteria,我有这样的标准 final Criteria criteria = session.createCriteria(Computer.class) final Criteria studentCriteria = criteria.createCriteria("student","s"); final Criteria schoolCriteria = studentCriteria.createCriteria("school"); 一切正常。但是在学校标准中,我需要地
final Criteria criteria = session.createCriteria(Computer.class)
final Criteria studentCriteria = criteria.createCriteria("student","s");
final Criteria schoolCriteria = studentCriteria.createCriteria("school");
一切正常。但是在学校标准
中,我需要地址
,它是学校实体的属性
我的问题是为什么这不起作用
schoolCriteria.setFetchMode("address",FetchMode.JOIN);
我在SQL语句中看不到联接
我只是想如果我已经在学校,我就可以得到地址
但这是可行的
criteria.setFetchMode("student",FetchMode.JOIN);criteria.setFetchMode("student.school",FetchMode.JOIN);criteria.setFetchMode("student.school.address",FetchMode.JOIN);
为什么会这样
我正在使用Hibernate4.1.5
非常感谢。因为如果不获取父对象,就无法直接获取子对象。当您尝试执行schoolCriteria.setFetchMode(“地址”,FetchMode.JOIN)时
表示即使在会话
关闭后,您仍需要地址对象(这是学校实体的一个属性),但已加载学校
对象,因此如何将地址
对象设置为学生
你必须像JamesB那样做,阅读更多@我认为你需要像这样将连接链接在一起:
session.createCriteria(Computer.class)
.setFetchMode("student", FetchMode.JOIN)
.setFetchMode("school", FetchMode.JOIN)
.setFetchMode("address", FetchMode.JOIN)
但是我用
最终标准schoolCriteria=studentCriteria.createCriteria(“学校”)代码>对吗?这将通过内部联接为我提供完整的学校对象。。我只是想如果我已经加载了学校对象
就是通过左外和右外连接得到地址
对象吗?但是我的数据库是一台有学生的计算机。学生们有一所学校。我需要计算机给学生带来一个连接给学校带来一个连接,然后通过左外连接带来地址。它使用school.createAlias(“地址”,“a”)但我只是觉得编写school.setFetchMode(“address”,FetchMode.JOIN)更容易;