我正在尝试执行HQL
查询,该查询结合了两个对象的数据:Person
和PersonRoleAssociation
。
我正在运行Hibernate
4.3.10和Grails
3.0.10。
我当前的查询看起来像这样:
SELECT person
FROM Person person,
PersonRoleAssociation personRoleAssoc
WHERE personRoleAssoc.person = person
根据我的理解,这相当于标准的SQL
左内连接。这适用于大多数情况,但我还需要查询缺少Persons
的所有PersonRoleAssociation
,并且因为上面的查询是左连接,我会遇到问题。
在标准SQL
中,我只使用左外连接,但我找不到HQL
的任何等效内容。
如何在不更改对象结构的情况下在HQL
中执行外部联接的等效操作?
答案 0 :(得分:2)
如果您无法在Person端添加OneToMany并使用标准左外连接,那么我认为您应该选择正确的连接。类似的东西:
SELECT p
FROM PersonRoleAssociation personRoleAssoc
RIGHT OUTER JOIN personRoleAssoc.person p
WHERE /* other criteria */