0
为什么这个多态查询不起作用?如何在grails中用executeQuery()做多态查询?
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字符串。
同样的错误。认为它与命名的属性函数有关。 – netbrain 2011-05-02 21:03:16
我添加了一个代码示例,为了理智,检查我们是否以相同的方式构造类。 – Dana 2011-05-02 21:51:34
我很快就检查了这一点。奇怪它不适合我。但是,您的解决方案仍然可以使用多行GString吗? (例如“”“gstring”“”) – netbrain 2011-05-04 08:21:40