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”)