Hibernate各种异常解决方案

问题提示:
[b][size=large]异常1:org.hibernate.PropertyNotFoundException: Could not find a getter for attribute [/size][/b]

问题分析:
1)getter()方法写错了,没有按照javaBean的规则写.

2)*.hmb.xml中的属性名和pojo中的是否一致.注意:属性名是否多了空格.
启示:.hbm.xml里的排列最好跟数据库表里的排列一样!最好不要乱改变位置!否则会出莫名其妙的错误!

3)字段的取名要注意。比如数据库中的字段为M_R_ID,映射到hbm.xml为mRId,那么产生的POJO也是mRId,自动产生的getter方法为:getMRId();相应的setter方法一致,这样就会抛出上面所述异常,这个应该是hibernate的模板格式问题。所以尽量要避免这样的命名。

解决方法:
1)换做getmRId(); 问题可解决,没有抛出异常,能取值。
2)修改数据库字段名。这个最好,不会产生以后的不确定因素。

再例如:在求道路对应表算法中,如果早JavaBean中,把起始节点和终止节点分别命名为:sNode和eNode,那末相应的get和set方法分别是:
 public int getSNode() {
return sNode;
}
public void setSNode(int sNode) {
this.sNode = sNode;
}
public int getENode() {
return eNode;
}
public void setENode(int eNode) {
this.eNode = eNode;
}


那末在运行时就会出现上述异常。正确的命名是:snode enode
相应的JavaBean代码如下:
 public int getSnode() {
return snode;
}
public void setSnode(int snode) {
this.snode = snode;
}
public int getEnode() {
return enode;
}
public void setEnode(int enode) {
this.enode = enode;
}
现在如果其它配置都正确的话,上述异常就会消失了。

[size=large][b]异常2:org.hibernate.QueryException: could not resolve property: age of: cn.com.newcom.User [from cn.com.newcom.User user where user.age > :minAge and user.username like :userName][/b][/size]

出现异常的原因:HQL语句写法错误
出现上述异常的HQL书写形式如下:
<query name="queryUser_byAgeAndName">

<![CDATA[
from User user where user.age > :minAge and user.username like :userName]]>
</query>


解决办法:
改写HQL语句,改写后的HQL语句如下:
<query name="queryUser_byAgeAndName">

<![CDATA[
from User user where age > :minAge and username like :userName

]]>
</query>


或者是:
<query name="queryUser_byAgeAndName">

<![CDATA[
from User where age > :minAge and username like :userName

]]>
</query>



继续添加。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值