我在 Grails 中有一个域,它是 Case ,另一个域是 Payment

我想获得 Case ,所有在支付列表中的 Payment s(包含在 hasMany 关系中),都具有相同的 collectorNick

例子:

payment1 (collectorNick:a)
payment2 (collectorNick:a)
payment3 (collectorNick:b)


Case1(payments[payment1,payment2]
Case2(payments[payment1,payment3]

当搜索 collectorNick:a 时,结果将是 Case1,因为支付 collectorNick 是 a,Case2 有 payment3,payment3 的收集者是 b

我试图实现这一点,但是当我创建的 createCriteria 我同时获得 Case1 和 Case2

我知道这可以通过不同的方式完成,但我需要使用 createCriteria 中的 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)
                   }
               }
             }

最佳答案

如果我正确理解您要做什么(仅查找 Case 实例,其中 所有 付款均由给定收集器收集),那么如何:

def cases = Case.createCriteria().list(max: limit, offset: offset){
    not {
        payments {
                ne('collectorNick', params.collector)
        }
    }
}

关于grails - hasMany 关系中的 CreateCriteria Grails,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27476289/

10-12 21:40