我有要求,其中我需要一些标准查询逻辑来进行配置驱动。之前我曾经查询过:
例如。:
User.createCriteria().list{
or{
eq('username',user.username)
eq('name',user.name)
}
}
但是,我需要在我的用例中对此进行配置,因此,我尝试使用此代码段。
def criteriaCondition= grailsApplication.config.criteriaCondition?:{user->
or{
eq('username',user.username)
eq('name',user.name)
}
}
User.createCriteria().list{criteriaCondition(user)}
但是,这对我不起作用。我正在为“或”丢失方法异常,我从某些来源尝试了很少的解决方案,但对我没有用。
所以,谁能帮助我:
1)如何使以上给出的代码起作用。
2)我的用例还有其他更好的方法。
提前致谢!!!
最佳答案
您必须将criteriaBuilder对象传递给闭包,如下所示:
def criteriaCondition = grailsApplication.config.criteriaCondition ?: { cb, user ->
cb.or{
cb.eq('username',user.username)
cb.eq('name',user.name)
}
}
def criteriaBuilder = User.createCriteria()
criteriaBuilder.list{
criteriaCondition(criteriaBuilder, user)
}
显然,Config.groovy中的闭包也必须具有相同的参数列表,包括
cb
关于grails - 在createCriteria中使用配置驱动的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18888632/