報(bào)錯(cuò)信息:could not find setter for rownum_
還原現(xiàn)場(chǎng):在mysql環(huán)境下,以下代碼,在mysql下運(yùn)行正常,但是切換到oralce,報(bào)出找不到STUDENTNAME屬性的錯(cuò)誤。 Sql代碼
分析:原來(lái)是oracle自動(dòng)將列映射的studentName轉(zhuǎn)換為大寫的STUDENTNAME,所以不能映射,報(bào)類找不到STUDENTNAME的set方法。 解決辦法:添加addScalar方法,代碼如下: Sql代碼
Tip: the addScalar() calls were required on HSQLDB to make it match a property name since it returns column names in all uppercase (e.g. "STUDENTNAME"). This could also be solved with a custom transformer that search the property names instead of using exact match - maybe we should provide a fuzzyAliasToBean() method ; 還有一種方式解決,就是使用雙引號(hào)將別名包裹起來(lái),感覺(jué)不是很優(yōu)雅。像這樣 Sql代碼
createSQLQuery setFirstResult設(shè)置起始記錄,setMaxResult設(shè)置結(jié)束記錄 sql里有用分組函數(shù),返回非持久化對(duì)象 當(dāng)firstResult=0,正常,當(dāng)firstResult>0時(shí),報(bào)錯(cuò)。 大家是否遇到過(guò)? Java代碼
問(wèn)題補(bǔ)充:報(bào)錯(cuò)信息:could not find setter for rownum_ 用createSQLQuery的方式,查詢的結(jié)果setResultTransformer()了一下。 并且設(shè)置了firstResult和MaxResult. 現(xiàn)象: 當(dāng)firstResult為0的時(shí)候,一切正常,當(dāng)firstResult不為0的時(shí)候報(bào) “could not find setter for rownum_”的錯(cuò)誤 如果不setResultTransformer,設(shè)置的firstResult和MaxResult不受影響。 主要是改sql 1、別名要大寫 如:select day DAY,count(id) COUNT from t_name group by day 像樓下給的鏈接的解釋,oracle自動(dòng)將別名大寫,但是如果自己設(shè)置了小寫的,就會(huì)出現(xiàn)上面的問(wèn)題。 為了避免addScalar多個(gè),建議將別名直接大寫。 2、當(dāng)然你可以采用多個(gè)addScalar,這樣只會(huì),你就不能封裝為通用的dao了。 使用addSalar方法是,報(bào)錯(cuò)如下: IllegalArgumentException occurred while calling setter of “包名.bean類名” 解決方法:設(shè)置查詢出來(lái)的字段的類型
|
|