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没有什么异常的,不知道是不是版本问题