关闭

Hibernate3导致的一个问题

标签: hibernateexceptionintegerthreaduser
1978人阅读 评论(1) 收藏 举报

这个问题在网上看到有人提出来过,却没有回答。经过几天的思考,终于有了答案。

问题描述如下:

尝试如下代码:
Transaction tx=userdao.getSession().beginTransaction();
 resultUser=(User)userdao.getSession().load(User.class,new Integer(1));
 resultUser.setPassword("passwordchanged");
 tx.commit();

程序会抛出异常:
 Exception in thread "main" java.lang.NullPointerException
 at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
 at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
 at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
 at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
 at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
 at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
 at org.hibernate.impl.SessionImpl.load(SessionImpl.java:781)
 at org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
 at databean.dao.UserDAO.main(UserDAO.java:30)

原因是因为hibernate3里lazy的属性默认为“true”。需要添加hbm配置文件中hibernate-mapping的属性default-lazy="false"

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:58381次
    • 积分:1021
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:1篇
    • 译文:0篇
    • 评论:12条
    最新评论
    Java blog