我发现了一个HQL查询,我正在努力理解它。注释中说LEFT JOIN
会导致Hibernate急切地加载子表中关联的实体,而DISTINCT
修改器需要用于过滤结果集中重复的父实体。这些注释有道理吗?我以前从未见过这种使用方式。
SELECT DISTINCT p FROM Parent AS p
LEFT JOIN p.children AS c
WHERE p.state = 1
ORDER BY p.modified
注意,在WHERE
或ORDER BY
子句中不使用c
。
似乎用更简单的查询语句替换这个查询语句是安全的:
SELECT p FROM Parent AS p
WHERE p.state = 1
ORDER BY p.modified
但我不确定原始查询是否有一个充分的理由被写成这样。