hibernate - HQL多表选择-外部联接?

标签 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内部左连接。这适用于大多数情况,但是我还需要查询所有缺少PersonsPersonRoleAssociation,并且由于上述查询是左连接,因此我遇到了问题。

在标准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/

相关文章:

java - HQL : Named Parameter not found even if it exist

java - 这个实体模型的HQL?

java - Jboss7 OSGI 上的 hibernate (无 EJB)

java - 无法从 Spring Boot 连接到 MySQL 数据库

java - Hibernate EnumType实例化异常

Grails 在可搜索查询构建器中包括空值检查

grails - 输入和创建对象

amazon-web-services - 如何在grails中列出所有aws区域

java - 有没有办法使用 "GREATEST(field1, field2)"进行 SELECT,其中 field1 和 field2 是同一选择中的聚合和?

java - JPA-onetomany级联在子表中插入相同的记录两次