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

    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])
    }
}

08-16 22:43