左连接grails条件

左连接grails条件,grails,gorm,criteria,Grails,Gorm,Criteria,我们有一个用户类 class User { ... } 另一类: class Licence { User user Event event } 我们要做的是左连接(因为不是每个用户都有许可证类的条目) 我们天真地这样做: def a = User.withCriteria { createAlias("Licence", "l", CriteriaSpecification.LEFT_JOIN) eq("id", "l.user.id") i

我们有一个用户类

class User {
...
}
另一类:

class Licence {

    User user
    Event event

}
我们要做的是左连接(因为不是每个用户都有许可证类的条目)

我们天真地这样做:

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

有人能帮你做这个查询吗?

问题是,如果你没有外键或者至少没有外键,grails就不知道用户端的连接。如果您有
static hasOne=[license:license]
您的代码将按照回答工作。

用户
许可之间的连接性质是什么?这是一个单间还是单间?在我看来,您需要用户中的
static hasOne=[license:license]
static hasMany=[licenses:license]
实际上,这是用户的一对一。但是我没有声明hasOne关系,因为当hasOne的边可以为空时,我总是对hasOne有问题……不太正确。在License类中,有2个外键:user和eventI意味着:用户类中需要有一个外键(license-license)或hasOne(license),相关标准才能起作用