hibernate load 报空指针

dreams1208 2012-11-06 10:33:50
根据主键IDload的时候报空指针
show_sql=true
在load的时候也没打印hql
ID确认在数据库中存在
配置方面都没问题
登录都可以用

严重: Servlet.service() for servlet action threw exception
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 org.springframework.orm.hibernate3.HibernateTemplate$3.doInHibernate(HibernateTemplate.java:508)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:502)
at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:496)
at com.shinythink.DbOperration.PackagMethod.querys(PackagMethod.java:53)
at com.shinythink.Dao.Impl.UserListDaoImpl.loadUserListWhereId(UserListDaoImpl.java:31)
at com.shinythink.Service.Impl.UserListServiceImpl.updatePassWord(UserListServiceImpl.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy1.updatePassWord(Unknown Source)
at com.shinythink.Action.UserListAction.UpdatePassWord(UserListAction.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)




谁帮忙看看是什么问题.
谢谢了.
...全文
177 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LS1firesoar 2012-11-06
  • 打赏
  • 举报
回复
debug调代码,就搞定了,你这估计是lazy导致,数据没有加载过来出现的Null
艾小仙 2012-11-06
  • 打赏
  • 举报
回复
用get load是懒加载的 load的话你加载类了然后要获取属性getName()这样子,可能就会抛出异常了 用get的话没有这个问题
IT0918liu 2012-11-06
  • 打赏
  • 举报
回复
get()和load()之间是lazy加载的区别,不会有以上的不同吧?仔细查查
dreams1208 2012-11-06
  • 打赏
  • 举报
回复
Acton: boolean bool = userlistservice.updatePassWord(userid,password); service: Userlist userlist = userlistdao.loadUserListWhereId(userid); dao: return packmethod.querys(Userlist.class, id); hibernate: return (POJO) this.getHibernateTemplate().load(clazz, id); 如果 (POJO) this.getHibernateTemplate().load(clazz, id); 这一句,改成用get(); (POJO) this.getHibernateTemplate().get(clazz, id); 这样又可以,找到数据,而且不报错.
IT0918liu 2012-11-06
  • 打赏
  • 举报
回复
贴一下源码吧,这看不出
w455322185 2012-11-06
  • 打赏
  • 举报
回复
90后Java程序员来解决这个问题 load和get的区别:hibernate对于load方法认为该数据在数据库里一定存在,可以放心使用代理来延时加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到数据,否则返回null..
dracularking 2012-11-06
  • 打赏
  • 举报
回复
load的特点是为了迟加载总是先返回proxy(Hibernate术语),而这里get又可以成功得到真实实例(真实实例与proxy之间的差别就是有无加载实体数据),说明影响proxy创建的障碍应该只剩下开关机制之类的(限制proxy创建或运用的机制) at com.shinythink.Dao.Impl.UserListDaoImpl.loadUserListWhereId(UserListDaoImpl.java:31) at com.shinythink.Service.Impl.UserListServiceImpl.updatePassWord(UserListServiceImpl.java:51) 所以6楼很可能是正确的
brightyq 2012-11-06
  • 打赏
  • 举报
回复
你的action 加type属性看看 <action name="userListAction" type="org.springframework.web.struts.DelegatingActionProxy">

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧