为什么这个多态查询不起作用?
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)
UPDATE2
这个问题困扰着我。现在我不在乎再使用它了。这就是我最终做的事情:
def typeClass = Super.class.name
String hql = """
FROM User u
WHERE
u.type.class = $typeClass
"""
return UserMedia.executeQuery(hql)
真的很奇怪,无论我在尝试通过class
或class.name
时做了什么我都会得到错误。有和没有多行groovy字符串。
答案 0 :(得分:2)
尝试:
[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])
}
}