我有2个域类,如下所示:
class Organisation {
String name
static hasMany = [users: User]
}
class User {
String emailAddress
static belongsTo = [organisation: Organisation]
}
我想创建一个条件查询,返回这些的笛卡尔积。
我的标准关闭如下:
def criteriaClosure = {
and {
createAlias('users', 'u', CriteriaSpecification.LEFT_JOIN)
eq('someProperty', 'someValue')
//...
}
}
这是有效的,因为结果列表包含Organisation
集合中每个元素的users
,但我实际上希望结果是{{1}的列表像这样:
Object[]
因此,在上面的例子中,Organisation1 | User1
Organisation1 | User2
Organisation1 | User3
Organisation2 | null
Organisation3 | User4
在Organisation1
集合中有3个User
,users
没有,Organisation2
有1 {{1} }}
我知道我可以通过Organisation3
多个项目(例如User
)使用HQL来实现这一目标,但是有一些方法可以使用条件查询吗?
编辑:
我尝试通过添加此块来应用投影:
select
然而,我得到一个select organisation, user from...
(也许我无法对一个集合表达这样的投影?)
答案 0 :(得分:0)
我想,你想使用projections
:
def criteriaClosure = {
projections{
property 'name'
property 'emailAddress' // maybe 'user.emailAddress'
}
and {
createAlias('users', 'u', CriteriaSpecification.LEFT_JOIN)
eq('someProperty', 'someValue')
//...
}
}
请参阅ref-doc