首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

WebWork.Spring.Hibernate整合开发网络书城-学习遇到的异常4

2012-10-25 
WebWork.Spring.Hibernate整合开发网络书城----学习遇到的错误4hibernate中at org.hibernate.tuple.Abstra

WebWork.Spring.Hibernate整合开发网络书城----学习遇到的错误4
hibernate中at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)异常的解决方法
今天写webwork+spring+hibernate的时候碰到了这个问题

java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)这个问题出得很莫名其妙,我在用find方法找数据的时候,如果数据库中不存在这条记录,那么代码一切正常,但如果存在相应记录就会抛出上面的异常,搜了一圈,首先在国外的网站上找到一个方法
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel
主要说的是问题出在CGLib上面,修正一下就可以了,下载中也给出了patch,我没有试过,
我看到了最后一条评论,直接更新CGlib到2.2beta就可以了。我试了一下,问题解决了。
在搜索过程中,JavaEye有个帖子也提到了这个问题,解决办法除了上面那个,还有人说可以
设置相关表的lazy="false"解决问题,我没有尝试过,大家可以看看,各取所需。
在查询Department,Duty,Role时均正常.查询Userinfo时,报

java.lang.NullPointerException
org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)

在网上搜索答案时,给出的解决方案是:

1.导入cglib-2.2并替换掉cglib-2.13

2.将其关联的对象设置成lazy="false"

我采用的是第二种:即将  <many-to-one name="role" fetch="select" >
            <column name="ROLEID" precision="10" scale="0" />
        </many-to-one>
        <many-to-one name="duty" fetch="select" >
            <column name="DUTYID" precision="10" scale="0" />
        </many-to-one>
        <many-to-one name="department" fetch="select" >
            <column name="DEPTID" precision="10" scale="0" />
        </many-to-one>

改为:

  <many-to-one name="role" fetch="select" lazy="false">
            <column name="ROLEID" precision="10" scale="0" />
        </many-to-one>
        <many-to-one name="duty" fetch="select" lazy="false">
            <column name="DUTYID" precision="10" scale="0" />
        </many-to-one>
        <many-to-one name="department" fetch="select" lazy="false">
            <column name="DEPTID" precision="10" scale="0" />
        </many-to-one>

即可正常运行.

热点排行