Grails中的域名为Case
,其他域名为Payment
。
我希望获得付款清单中所有Case
(Payment
关系中包含的所有hasMany
)的collectorNick
具有相同的payment1 (collectorNick:a)
payment2 (collectorNick:a)
payment3 (collectorNick:b)
Case1(payments[payment1,payment2]
Case2(payments[payment1,payment3]
示例:
collectorNick:a
搜索collectorNick
时,结果将为Case1,因为付款b
为a且Case2为payment3且payment3的收集者为createCriteria
。
我试图实现这一点,但是当我创建的createCriteria
我同时获得Case1和Case2时
我知道可以通过不同的方式完成,但我需要使用Case
中的Case
,因为我稍后需要从其他一些案例区域进行过滤。
List<Payment> payments
static hasMany = [ payments: Payment ]
已
Payment
和String collectorNick
已
createCriteria
我使用的 def cases = Case.createCriteria().list(max: limit, offset: offset){
and{
payments {
eq('collectorNick', params.collector)
}
}
}
是:
{{1}}
答案 0 :(得分:4)
如果我正确理解您要执行的操作(仅查找Case
个实例,其中所有付款由特定收集者收集),请执行以下操作:
def cases = Case.createCriteria().list(max: limit, offset: offset){
not {
payments {
ne('collectorNick', params.collector)
}
}
}