" org.hibernate.PropertyNotFoundException:Could not find a getter for ..

 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中的是否一致.注意:屬性名是否多了空格.




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章