1

如何使用一个查询在休眠中选择整个对象图?我设置fetch = FetchType.LAZY为我的实体的所有依赖对象类型字段。但我也想提供一种方法,它可以快速选择所有对象(比如FetchType.EAGER在所有字段上指定)。怎么做?

4

3 回答 3

0

您可以使用命名查询,例如,如果您有:

Class Teacher {
    List<Course> courses;
    List<Student> students;
}

利用:

select t from Teacher t inner join fetch t.courses tcs inner join fetch t.students tss where ....

那么你有课程和学生热切加载的教师,它不依赖于fetch = FetchType.LAZY

于 2013-11-06T21:06:52.390 回答
0

您可以使用Hibernate.initialize()加载对象的所有延迟加载的属性。我不确定您要遍历对象图的深度,但我相信这将涵盖至少 80% 的实际有用案例。

于 2013-11-06T18:31:07.770 回答
0

我们正在使用 Ejb。如果您为惰性对象调用 getter,它会从数据库中获取。缺点是,不仅有一个带有连接的查询,每个惰性获取的对象都有一个查询。

于 2013-11-07T00:03:55.113 回答