我正在尝试执行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
中执行等效的外部联接?
最佳答案
如果您不能在Person端添加OneToMany并使用标准的左外部联接,那么我认为您应该进行右联接。就像是:
SELECT p
FROM PersonRoleAssociation personRoleAssoc
RIGHT OUTER JOIN personRoleAssoc.person p
WHERE /* other criteria */
关于hibernate - HQL多表选择-外部联接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42558770/