hibernate中at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)异常的解决方法
java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
在网上搜索答案时,给出的解决方案是:
1.导入cglib-2.2并替换掉cglib-2.13
2.将其关联的对象设置成lazy="false"
我采用的是第二种:即将 <many-to-one name="role" class="com.oaweb.bo.Role" fetch="select" >
<column name="ROLEID" precision="10" scale="0" />
</many-to-one>
<many-to-one name="duty" class="com.oaweb.bo.Duty" fetch="select" >
<column name="DUTYID" precision="10" scale="0" />
</many-to-one>
<many-to-one name="department" class="com.oaweb.bo.Department" fetch="select" >
<column name="DEPTID" precision="10" scale="0" />
</many-to-one>
改为:
<many-to-one name="role" class="com.oaweb.bo.Role" fetch="select" lazy="false">
<column name="ROLEID" precision="10" scale="0" />
</many-to-one>
<many-to-one name="duty" class="com.oaweb.bo.Duty" fetch="select" lazy="false">
<column name="DUTYID" precision="10" scale="0" />
</many-to-one>
<many-to-one name="department" class="com.oaweb.bo.Department" fetch="select" lazy="false">
<column name="DEPTID" precision="10" scale="0" />
</many-to-one>
即可正常运行.
这个问题出得很莫名其妙,我单个表查询是是好的,如果是两个存在联系的表的话,如果你查询任何一个表都会有这个问题发现了两种解决方法:
1:主要说的是问题出在CGLib上面,修正一下就可以了,下载中也给出了patch,使用hibernate3.1把cglib从2.1.3更新到2.2.beta1。
2:设置相关表的lazy="false"解决问题。但是问题又出现了,到底是写在那个映射文件中呢?