Grails 使用带有 3x+ 的动态查找器逻辑论证

发布于 2024-11-15 08:29:07 字数 271 浏览 1 评论 0原文

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

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

尽管如此,我需要一个像这样的三重逻辑参数:

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

有什么简单的方法可以做到这一点吗?

I sucessfully managed to search in the database using this dynamic finder from Hibernate:

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

Although, i need a tripple logical argument like this:

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

Any simple way to do it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱你是孤单的心事 2024-11-22 08:29:07

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

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

意味着 this:

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

或 this:

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

不可否认,如果谓词始终与 AndOr 组合。


更新:从 Grails 1.4 开始,如果谓词全部与 AndOr 组合,则可以拥有无​​限数量的谓词


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

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

The Grails dynamic finders don't support more than two predicates. This is because it's not clear whether

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

means this:

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

or this:

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

Admittedly if the predicates are always combined with And or Or.


Update: since Grails 1.4 you can have an unlimited number of predicates if they're all combined with either And or Or


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')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文