为什么这个多态查询不起作用?
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])
}
}