【发布时间】:2010-12-06 22:14:21
【问题描述】:
我找到了我想要理解的这个 HQL 查询。评论说LEFT JOIN 导致Hibernate 急切地加载子表中的关联实体,并且需要DISTINCT 修饰符来过滤掉结果集中重复的父实体。这些 cmets 有意义吗?我以前从未见过以这种方式使用联接。
SELECT DISTINCT p FROM Parent AS p
LEFT JOIN p.children AS c
WHERE p.state = 1
ORDER BY p.modified
注意c 未在WHERE 或ORDER BY 子句中使用。
用更简单的查询替换这个查询似乎是安全的:
SELECT p FROM Parent AS p
WHERE p.state = 1
ORDER BY p.modified
但我不确定是否有充分的理由原始查询按原样编写。
【问题讨论】: