使用hibernate的时候,会出现PropertyNotFoundExceptio
1. hibernate配制文件错误,属性里有空格等。
2.是get方法和属性不对应。
今天调试的过程中,没有配置文件和get方法错误,还是出现了该异常
百度后发现很多都是胡写的,终于找到一篇文章解决了问题
hbm.xml中命名为mystate
修改了get方法的命名,原getMyState() 修改为getMystate()。
原因如下(引用原文):
反编译了hibernate代码发现hibbernate是这么处理的,首先利用配制文件的package和 name 找到要映射到的类,按上面的配制文件就是gmt.boss.interfaces.customer.po.TAccount,然后利用反射取出这个类的信息,取的时候利用了缓存的机制,不是每次都反射一次。然后用这个类的信息中的get,set方法和 配制文件中进行匹配。以上面的getGAccountId()为例, 先去掉这个方法中的前三位取余下的部分为flag1 =GAccountId,然后调用jdk中的Introspector.decapitalize把这个字符串dropCase得到flag2, 然而 Introspector.decapitalizedropCase的过程,如果这个字符串开头为一个以上的大写字母,那就不做任何操作反回原串,,所以flag2 =GAccountId。
匹配的过程为只要flag1 与flag2 中有一个和 配制文件中的property name一致就为正确的映射。GAccountId 显然和<property name="gAccountId" column="G_ACCOUNT_ID"type="java.lang.String" />无法匹配,抛出
原文地址如下:
http://hi.baidu.com/darkbreaker/blog/item/3074c5086c281fdd62d9869c