gpt4 book ai didi

hibernate - Grails GORM查询以匹配多个关联对象

转载 作者:行者123 更新时间:2023-12-02 15:36:02 25 4
gpt4 key购买 nike

我在找出GORM查询以匹配对象上的多个关联时遇到了麻烦:

class Zoo {
String name
static hasMany = [animals:Animal]

static namedQueries = {
// SEARCH1 match any of a list of animals
searchOr { searchAnimals ->
or {
searchAnimals.each { name ->
animals {
eq('name', name)
}
}
}
}

// SEARCH2 match ALL of a list of animals
searchAnd { searchAnimals ->
and {
searchAnimals.each { name ->
animals {
eq('name', name)
}
}
}
}
}
}

class Animal {
String name
}

SEARCH1会很高兴地将动物园与动物列表中的任何一个匹配,但是如何编写SEARCH2才能使动物园中所有动物都位于提供的列表中?

最佳答案

我不知道GORM,也不知道完整的解决方案,但是我认为当前的SEARCH2查询有什么问题,什么可能有帮助。当前的searchOr是这样的:

WHERE ANIMAL.NAME = 'bear' 
OR ANIMAL.NAME = 'bird'
OR ANIMAL.NAME = 'puma'

这样会很好用。 searchAnd是这样的:
WHERE ANIMAL.NAME = 'bear' 
AND ANIMAL.NAME = 'bird'
AND ANIMAL.NAME = 'puma'

这不能给出正确的结果,因为任何单个动物都不能同时是熊,鸟和美洲狮。

您正在寻找的是这样的:
WHERE EXISTS (SELECT FROM ANIMAL A WHERE A.ZOO = Z.ID AND A.NAME = 'bear') 
AND EXISTS (SELECT FROM ANIMAL A WHERE A.ZOO = Z.ID AND A.NAME = 'bird')
AND EXISTS (SELECT FROM ANIMAL A WHERE A.ZOO = Z.ID AND A.NAME = 'puma')

但是我对GORM的了解还不足以能够以这种方式制定查询。根据我的阅读, detached criteria中有一个 exists方法。但是也许只是不可能,除非使用 Hibernate Query Language

关于hibernate - Grails GORM查询以匹配多个关联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com