gpt4 book ai didi

hibernate - 如何在grails中使用executeQuery()进行多态查询?

转载 作者:行者123 更新时间:2023-12-02 14:27:46 24 4
gpt4 key购买 nike

为什么这个多态查询不起作用?

    String hql = """
FROM User u
WHERE
u.type.class = :typeClass
"""

return User.executeQuery(hql, [typeClass:Super])

我所得到的是以下异常:
Stacktrace follows:
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Integer
....

更新
仅当我尝试将类作为命名参数添加时,才会出现该错误。例如,我没有收到此代码错误:
    String hql = """
FROM User u
WHERE
u.type.class = Super
"""

return User.executeQuery(hql)

更新2

这个问题使我感到困惑。现在我不在乎用更多的时间了。这就是我最终要做的事情:
    def typeClass = Super.class.name

String hql = """
FROM User u
WHERE
u.type.class = $typeClass
"""

return UserMedia.executeQuery(hql)

真的很奇怪,无论我尝试传递 class还是 class.name时做了什么,我总是会收到错误消息。有和没有多行groovy字符串。

最佳答案

尝试:

[typeClass: Super.class.name]

编辑:这是一些对我有用的代码的简化版本。
class Food {
// ...
}

class CatFood extends Food {
// ...
}

class DogFood extends Food {
// ...
}

class Animal {
static belongsTo = [food: Food] // This example is a little contrived...
}

class AnimalService {
def usedCatFoods() {
Animal.executeQuery("select a.food from Animal a where a.food.class = :foodClass", [foodClass: CatFood.class.name])
}
}

关于hibernate - 如何在grails中使用executeQuery()进行多态查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860642/

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