HQL Multi Table Select - 外连接?

HQL Multi Table Select - Outer Join?

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

我 运行宁 Hibernate 4.3.10,Grails 3.0.10。

我当前的查询如下所示:

SELECT person 
  FROM Person person, 
       PersonRoleAssociation personRoleAssoc
 WHERE personRoleAssoc.person = person

根据我的理解,这等同于标准的 SQL 内部左连接。这适用于大多数情况,但我还需要查询缺少 PersonRoleAssociation 的所有 Persons,并且因为上面的查询是左连接,所以我 运行 进入问题。

在标准 SQL 中,我会简单地使用左外连接,但是我找不到 HQL.

的任何等效项

如何在不更改对象结构的情况下执行与 HQL 中的外部联接等效的操作?

如果您不能在 Person 端添加 OneToMany 并使用标准的左外连接,那么我认为您应该使用右连接。类似于:

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