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