HQL Multi Table Select - 外连接?
HQL Multi Table Select - Outer Join?
我正在尝试执行 HQL
查询,该查询组合了来自两个对象的数据:Person
和 PersonRoleAssociation
。
我 运行宁 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 */
我正在尝试执行 HQL
查询,该查询组合了来自两个对象的数据:Person
和 PersonRoleAssociation
。
我 运行宁 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 */