org.hibernate.PropertyNotFoundException: Could not find a getterfor ...
我想碰到這類問題你和我的思路肯定是一樣的
肯定以爲是getter方法寫的有問題了吧,
其實真理往往產生的一霎,悲劇的是下一刻推翻了自己的真理往往是自己。
我的字段是:private boolean isDelete;
然後Eclipse幫我生成的是 isDelete(){return isDelete;}
猛一看好像沒啥錯。然後就想Eclipse生成的肯定是對的,自己是不是吧JavaBean的boolean類型記錯了。
折騰了好幾下、總是不敢相信Eclipse生成的是錯的。最後改了hibernate.hbm.xml配置文件中的屬性存取策略、把存取策略改爲:access="field"
然後將就着沒有了異常。
後來仔細想了下、把存取策略改爲field,後是通過反射存取字段的。而默認的是通過構造getXXX()存取的,那麼必然是getter有問題,
而爲什麼有一個其他的字段也是boolean read就可以正常呢。問題必然是getter
好吧,接下來相信自己的直覺,仔細看了看getter,
如果我們寫JavaBean,有個boolean isDelete字段、我們應該按照規則寫成 isIsDelete(),然而Eclipse生成的是isDelete必然的少了一個is,
所以這就是問題的根源了。
總結:
1,在使用hibernate的時候如果出現這類問題,
應該注意的是:
1)getter()方法寫錯了,沒有按照javaBean的規則寫.
(1):注意自己寫JavaBean的時候存取方法,一定要按照規則來,
(2):當然現在很多都是,Eclipse自動生成,那麼工具也有失誤的時候,
所以爲了防止工具失誤我們應該注意:
,屬性是boolean is開頭或者其他 類型以t 開頭時要注意編輯器生成的getter方法。
boolean is開頭的省略掉一個is
其他以t開頭的如 tCourse會自動生成 getCource少一個t。
2)*.hmb.xml中的屬性名和pojo中的是否一致.注意:屬性名是否多了空格.