Grails使用具有3x +逻辑参数的动态查找器 [英] Grails using dynamic finders with 3x+ logical arguments
问题描述
我成功地使用Hibernate中的动态查找器在数据库中进行搜索:
I sucessfully managed to search in the database using this dynamic finder from Hibernate:
def temp = User.findByNameAndStreet("name", "street")
尽管我需要一个这样的triple逻辑参数:
Although, i need a tripple logical argument like this:
def temp = User.findByNameAndStreetAndCity("name", "street", "city")
任何简单的方法来做?
推荐答案
The Grails dynamic finders don't support more than two predicates. This is because it's not clear whether
User.findByNameAndAgeOrGender('foo', 12, 'm')
意思是:
(name == 'foo' && age == 12) || gender == 'm'
或这个:
name == 'foo' && (age == 12 || gender == 'm')
诚然,如果谓词总是相结合与和
或或
。
Admittedly if the predicates are always combined with And
or Or
.
更新:自Grails 1.4以来,您可以拥有无限数量的谓词,如果它们都与和
或或
Update: since Grails 1.4 you can have an unlimited number of predicates if they're all combined with either And
or Or
相反,您可以使用 findWhere
或 findAllWhere
(取决于您是否只想要第一个结果或所有结果)。这两个都支持无限数量的谓词,我假定与和
相结合,例如:
Instead, you can use either findWhere
or findAllWhere
(depending on whether you want just the first result or all results). Both of these support an unlimited number of predicates which I assume are combined with And
, for example:
User.findAllWhere(name: "foo", age: 12, gender: 'm')
这篇关于Grails使用具有3x +逻辑参数的动态查找器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!