左连接 grails 条件

Left Join grails criteria

我们有一个用户 class

class User {
...
}

和另一个 class:

class Licence {

    User user
    Event event

}

我们想要做的是 Left Join(因为不是每个用户我们在许可 class 中都有一个条目)。

我们天真地这样做了:

def a = User.withCriteria {

    createAlias("Licence", "l", CriteriaSpecification.LEFT_JOIN)
    eq("id", "l.user.id")

    if (something == true)
        isNull("l.id")
    else
        isNotNull("l.id")
}

但查询失败:

could not resolve property Licence of User

有人可以帮忙做这个查询吗?

问题是,如果您没有外键或至少 hasOne,grails 无法识别 User 端的连接。如果您有 static hasOne = [licence: Licence],您的代码将按回答 here.

工作