使用具有3x +逻辑参数的动态查找器的Grails

时间:2011-06-15 15:49:01

标签: grails dynamic finder

我成功地使用Hibernate的动态查找器在数据库中搜索:

def temp = User.findByNameAndStreet("name", "street")

虽然,我需要一个像这样的三个逻辑论点:

def temp = User.findByNameAndStreetAndCity("name", "street", "city")

任何简单的方法吗?

1 个答案:

答案 0 :(得分:7)

Grails动态查找程序不支持两个以上的谓词。这是因为不清楚是否

User.findByNameAndAgeOrGender('foo', 12, 'm')

意味着:

(name == 'foo' && age == 12) || gender == 'm'

或者这个:

name == 'foo' && (age == 12 || gender == 'm')

不可否认,如果谓词始终与AndOr结合使用。


更新:自Grails 1.4以来,如果它们全部与AndOr

结合使用,则可以拥有无​​限数量的谓词

相反,您可以使用findWherefindAllWhere(取决于您是只想要第一个结果还是所有结果)。这两个都支持无限数量的谓词,我假设它们与And结合,例如:

User.findAllWhere(name: "foo", age: 12, gender: 'm')