HQL查询加入两个彼此不了解的域

时间:2014-11-13 17:14:46

标签: grails hql gorm

我的域模型包括几个域类,如下所示:

Domain model

Budget和Employee类都知道Position,但Position类不了解Budget或Employee类。我想使用GORM进行查询,然后返回预算及其相关员工列表。

我已经使用了HQL,因为看起来没有办法跨域使用Criteria查询。我的查询看起来像

from Budget as budget, Employee as employee where budget.position = employee.position 

此查询的问题在于没有从Employees到Positions的一对一映射。也就是说,可以存在“浮动”的位置,其中没有员工被分配到该位置。并且可以将给定的浮动位置分配给预算,但不分配给员工。

我想在HQL中使用左外连接,类似

from Budget as budget left outer join Employee as employee on employee.position = budget.position

但看起来HQL只支持对直接在域类上的属性进行连接。预算和员工都不知道彼此,所以我不确定这是否可行。有没有办法在HQL中进行我想要的查询?

1 个答案:

答案 0 :(得分:0)

你可以在Grails中修改grails中的域类定义,让gorm知道关联吗?

Position {
    static hasMany = [budgets:Budget, employees:Employee]

}

然后你可以这样做和hql语句:

from Budget b left join b.position p where p.employees is not empty