HQL多表选择 - 外连接?

时间:2017-03-02 14:58:37

标签: hibernate grails hql outer-join

我正在尝试执行HQL查询,该查询结合了两个对象的数据:PersonPersonRoleAssociation

我正在运行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中执行外部联接的等效操作?

1 个答案:

答案 0 :(得分:2)

如果您无法在Person端添加OneToMany并使用标准左外连接,那么我认为您应该选择正确的连接。类似的东西:

SELECT p 
  FROM PersonRoleAssociation personRoleAssoc
    RIGHT OUTER JOIN personRoleAssoc.person p       
 WHERE /* other criteria */