欢迎来到天天文库
浏览记录
ID:40555544
大小:16.00 KB
页数:2页
时间:2019-08-04
《hibernate常见出错》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、使用过hibernate的同事一定对PropertyNotFoundException异常非常熟悉,产生原因也很好找,通常的错误原因有:1.hibernate配制文件错误,属性里有空格等。2.是get方法和属性不对应。但是今天在开发过程中发现配制文件和get方法都没有错误,但是还是报PropertyNotFoundException异常。PO抽像类如下:privateStringgAccountId;/***getGAccountId描述:**@return返回gAccountId。*/publicStringgetGAccountId(){ret
2、urngAccountId;}/***setGAccountId描述:**@paramaccountId要设置的gAccountId。*/publicvoidsetGAccountId(StringaccountId){gAccountId=accountId;}hib.xml如下:3、ACCOUNT_ID"type="java.lang.String"/>**********所以我一直认识配制的没有错误,但是一到buildSessionFactory时就报异常。想了很久发现get方法最可能出错,于是把getGAccountId()改成getgAccountId();显然这是不符合javabean的命名规范的,但是问题竟然解决了。反编译了hibbernate代码发现hibbernate是这么处理的,首先利用配制文件的package和name找到要映射到的类,按上面的配制文件就是gmt.boss.interfaces.custome4、r.po.TAccount,然后利用反射取出这个类的信息,取的时候利用了缓存的机制,不是每次都反射一次。然后用这个类的信息中的get,set方法和配制文件中进行匹配。以上面的getGAccountId()为例,先去掉这个方法中的前三位取余下的部分为flag1=GAccountId,然后调用jdk中的Introspector.decapitalize把这个字符串dropCase得到flag2,然而Introspector.decapitalizedropCase的过程,如果这个字符串开头为一个以上的大写字母,那就不做任何操作反回原串,,所以flag25、=GAccountId。匹配的过程为只要flag1与flag2中有一个和配制文件中的propertyname一致就为正确的映射。GAccountId显然和无法匹配,抛出PropertyNotFoundException也就很自然了。最后把配制文件改成抽像类改成pri6、vateStringgaccountId;/***getGAccountId描述:**@return返回gAccountId。*/publicStringgetGaccountId(){returngaccountId;}问题OK了。女程序员征婚:SELECT*FROM男人们WHERE(未婚=trueor离异=true)and同性恋=falseand穷光蛋=falseand有房=trueand有车=trueand条件in(‘细心’,'温柔’,'体贴’,'贤惠’,'会做家务,会做饭,会逛街买东西,会浪漫,活泼,,帅气,绅士,大度,气质,智慧’,'最好7、还能生生生孩子’)and年龄between(26,40)orderby存款descLucene全文搜索引擎的应用本科生毕业设计(论文).pdf
3、ACCOUNT_ID"type="java.lang.String"/>**********所以我一直认识配制的没有错误,但是一到buildSessionFactory时就报异常。想了很久发现get方法最可能出错,于是把getGAccountId()改成getgAccountId();显然这是不符合javabean的命名规范的,但是问题竟然解决了。反编译了hibbernate代码发现hibbernate是这么处理的,首先利用配制文件的package和name找到要映射到的类,按上面的配制文件就是gmt.boss.interfaces.custome
4、r.po.TAccount,然后利用反射取出这个类的信息,取的时候利用了缓存的机制,不是每次都反射一次。然后用这个类的信息中的get,set方法和配制文件中进行匹配。以上面的getGAccountId()为例,先去掉这个方法中的前三位取余下的部分为flag1=GAccountId,然后调用jdk中的Introspector.decapitalize把这个字符串dropCase得到flag2,然而Introspector.decapitalizedropCase的过程,如果这个字符串开头为一个以上的大写字母,那就不做任何操作反回原串,,所以flag2
5、=GAccountId。匹配的过程为只要flag1与flag2中有一个和配制文件中的propertyname一致就为正确的映射。GAccountId显然和无法匹配,抛出PropertyNotFoundException也就很自然了。最后把配制文件改成抽像类改成pri
6、vateStringgaccountId;/***getGAccountId描述:**@return返回gAccountId。*/publicStringgetGaccountId(){returngaccountId;}问题OK了。女程序员征婚:SELECT*FROM男人们WHERE(未婚=trueor离异=true)and同性恋=falseand穷光蛋=falseand有房=trueand有车=trueand条件in(‘细心’,'温柔’,'体贴’,'贤惠’,'会做家务,会做饭,会逛街买东西,会浪漫,活泼,,帅气,绅士,大度,气质,智慧’,'最好
7、还能生生生孩子’)and年龄between(26,40)orderby存款descLucene全文搜索引擎的应用本科生毕业设计(论文).pdf
此文档下载收益归作者所有