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