我可以使用子选择和左外连接执行条件查询吗?
例如,我有 A 1-many B 1-many C。
使用 Criteria.createAlias ("b", "b", Criteria.LEFT_JOIN),我可以执行Left Outer 连接。
使用 Criteria.setFetchMode ("b", org.hibernate.FetchMode.DEFAULT),我可以使用默认的获取策略执行 Join。我认为在 A.B 和 B.C 中设置 @org.hibernate.annotations.FetchMode.SUBSELECT 就足够了(是吗?)。
问题 1:为什么 org.hibernate.FetchMode 没有 SUBSELECT 选项,而 org.hibernate.annotations.FetchMode 有?
问题 2:我可以使用 Sub-Select AND Left-Outer join 执行 Criteria 查询吗?
最佳答案
Criteria 和 org.hibernate.FetchMode.SELECT 不执行任何操作。 Criteria 的唯一选项是 org.hibernate.FetchMode.JOIN。我手动对 Criteria 结果进行延迟初始化:
for (Entity e : result) {
Hibernate.initizalize(e.getProperty());
}
关于java - Hibernate:使用子选择和左外连接执行条件查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2654764/