左连接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),相关标准才能起作用