日期:2014-05-19  浏览次数:20635 次

session.load抛出空指针?把load改为get就OK,
Session   session=HibernateTool.getSession();
  session.load(Man.class, "oo ");
  session.close();

    这么简单的代码,抛出如下异常:
    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:3120)
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:781)
at   org.hibernate.impl.SessionImpl.load(SessionImpl.java:703)
at   org.hibernate.impl.SessionImpl.load(SessionImpl.java:696)
at   test.hibernate.testloadget.Test2.main(Test2.java:25)


可是将load改为get就没事了,不明白,这是为什么呢?

本人的lib只有hibernate3.jar,是不是少了什么文件?

请各位大人帮忙!!多谢啦!!

------解决方案--------------------
呵呵,
是load(),和get()的机制不同,有空看看hibernate的文档,里面说的很清楚
执行load()时,先从Session查找当前的对象是否存在,如果不存在,则从数据库中去查询,如果不存在这条记录,则扔异常

执行get()的时候,不论Session中是否存在当前对象,直接从数据库中去查询,如果不存在,则返回null
------解决方案--------------------
如果load不到数据也不是空指针异常

http://www.javayou.com
------解决方案--------------------
确保有记录才可以load.
------解决方案--------------------
使用hibernate,cglib包是必须要的,否则无法创建代理,上面的异常也是在at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)时抛出的。其他包在你使用使用相应的功能时也会需要。
------解决方案--------------------
你load的时候先从缓存去获取,而get是直接读数据库,报错是因为缓存和数据库没有同步,就是数据不一致
------解决方案--------------------
v38(国产磁悬浮拖拉机:不上CSDN有多年) ( ) 信誉:100 Blog 2007-2-1 17:17:21 得分: 0



呵呵,
是load(),和get()的机制不同,有空看看hibernate的文档,里面说的很清楚
执行load()时,先从Session查找当前的对象是否存在,如果不存在,则从数据库中去查询,如果不存在这条记录,则扔异常

执行get()的时候,不论Session中是否存在当前对象,直接从数据库中去查询,如果不存在,则返回null

-------------------
load 跟 get 的不同
------解决方案--------------------
load 跟 get 的不同
load 得到了..还可以update
而get 就不可以了.
------解决方案--------------------
你调用的参数不对吧,load方法有2种,一种传入Class,一种是Object

应该如下:
Session session=HibernateTool.getSession();
Man man = (Man)session.load(Man.class, "oo ");
session.close();
或者:
Man man=new Man();
Session session=HibernateTool.getSession();
session.load(man, "oo ");
session.close();
------解决方案--------------------
我也遇到这种情况,应该是cglib.jar包的问题,我用的是hibernate3.1,以前用3.0没有什么异常的,不知道是不是版本问题