java - Hibernate:使用子选择和左外连接执行条件查询?

标签 java hibernate join criteria left-join

我可以使用子选择和左外连接执行条件查询吗?

例如,我有 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/

相关文章:

java - 使 BufferedReader 不等待 Process 完成

java - 在每个方法中不关闭 javax.sql.DataSource 可以吗?

java - Hibernate org.apache.xerces.parsers.SAXParser 未实现 XMLReader 异常

用于查找图中边权重的 MySQL 查询

mysql - 对按标签过滤的项目进行排序

java - 检查 Thymeleaf 模板中的 Null 属性

java - Storm Bolt 始终记录到worker.log

java - 对象为空,但应用程序的行为就像不是

java - 使@Embeddable 类可选?

sql-server - 从 SQL Server 中的多表连接生成 XML