如何使用一个查询在hibernate中选择整个对象图?我将fetch = FetchType.LAZY
设置为我的实体的所有依赖对象类型字段。但我也想提供一种方法,它将选择所有对象(如在所有字段上指定FetchType.EAGER
)。怎么做?
答案 0 :(得分:0)
您可以使用Hibernate.initialize()
加载对象的所有延迟加载属性。我不确定你想要遍历你的对象图有多深,但我相信这将涵盖至少80%的实际有用案例。
答案 1 :(得分: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
答案 2 :(得分:0)
我们正在使用Ejb。如果为惰性对象调用getter,则从数据库中获取它。缺点是,不仅有一个带有连接的查询,每个延迟获取对象都有一个查询。