Hibernate HQL多表选择-外部联接?
我正在尝试执行一个Hibernate HQL多表选择-外部联接?,hibernate,grails,hql,outer-join,Hibernate,Grails,Hql,Outer Join,我正在尝试执行一个HQL查询,该查询组合了两个对象的数据:Person,和personroleasociation 我正在运行Hibernate4.3.10和Grails3.0.10 我当前的查询如下所示: SELECT person FROM Person person, PersonRoleAssociation personRoleAssoc WHERE personRoleAssoc.person = person 据我所知,这相当于标准的SQL左内联接。这适用
HQL
查询,该查询组合了两个对象的数据:Person
,和personroleasociation
我正在运行Hibernate
4.3.10和Grails
3.0.10
我当前的查询如下所示:
SELECT person
FROM Person person,
PersonRoleAssociation personRoleAssoc
WHERE personRoleAssoc.person = person
据我所知,这相当于标准的SQL
左内联接。这适用于大多数情况,但我还需要查询所有缺少PersonRoleAssociation
的人员,因为上面的查询是左连接,所以我遇到了问题
在标准的SQL
中,我只会使用左外连接,但是我找不到任何与HQL
等价的连接
在不改变对象结构的情况下,如何在HQL
中执行与外部联接等效的操作 如果您不能在Person侧添加OneToMany并使用标准的左外连接,那么我认为您应该选择右连接。比如:
SELECT p
FROM PersonRoleAssociation personRoleAssoc
RIGHT OUTER JOIN personRoleAssoc.person p
WHERE /* other criteria */
如果你不能在人物侧添加一个OneToMany并使用标准的左外连接,那么我认为你应该选择右连接。比如:
SELECT p
FROM PersonRoleAssociation personRoleAssoc
RIGHT OUTER JOIN personRoleAssoc.person p
WHERE /* other criteria */
您是否将PersonRoleAssociation映射为Person实体中的OneToMany关系?@MaciejKowalski否,我听说Grails中的OneToMany关系可能会非常缓慢,因此我尝试避免它。您是否将PersonRoleAssociation映射为Person实体中的OneToMany关系?@MaciejKowalski否,我听说在Grails中拥有一对夫妻的关系可能会很慢,所以我试着避免它。没问题。很高兴我能帮上忙,没问题。很高兴我能帮忙