我点击删除,已经获得了ID的值,可是好像编译到 getHibernateTemplate().delete(getMessage(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.internalLoad(SessionImpl.java:830)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
at org.hibernate.type.EntityType.resolve(EntityType.java:303)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:792)
at org.springframework.orm.hibernate3.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:470)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:464)
at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:458)
at com.hibernate.blog.hibernate.dao.topicmessageHibernateDao.getMessage(topicmessageHibernateDao.java:20)
at com.hibernate.blog.hibernate.dao.topicmessageHibernateDao.deleteMessage(topicmessageHibernateDao.java:15)
at com.hibernate.blog.server.topicmessageServer.deleteMessage(topicmessageServer.java:18)
at com.hibernate.struts.action.TopicAction.deletetopic(TopicAction.java:125)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    getHibernateTemplate().delete(Object entity),删除的是持久化的对象,有可能是你的getMessage(id)这个方法不对,检查一下返回的是否是数据库中的某个实例。你再确保一下数据库当中是否有对应的记录。相信你写的类已经继承了HibernateDaoSupport了。哈哈,不然就是空指针了。
      

  2.   

    getHibernateTemplate().delete(""),这里操作的应该是对象吧。你看看这里得到的什么值。先输出来看看。
      

  3.   

    空指针错误,
    getMessage(id));这个没有得到对象
      

  4.   

    你的getMessage(id)得到的是一个Message对象吧,你确定得到了一个Message对象吗?说不定该id的对象根本没有或者是你的getMessage(id)方法有问题,你用System.out.println(getMessage(id));看看你得到的这个对象是不是null
      

  5.   

    getMessage(id))得到的对象为null,或者id为null
      

  6.   

    getHibernateTemplate().delete(getMessage(id));里面的delete()里面传入的是pojo对象,不是id属性值!
      

  7.   

    getHibernateTemplate().delete(对象);不是传ID 要通过ID 先查询出这个对象 然后在删除对象分两步
      

  8.   

    getMessage(id)
    把这个打印出来看看,应该是个空值.
      

  9.   

    是hibernate 的延迟加载问题吧,我以前也遇到过,把lazy="false";
      

  10.   

    应该改为:getHibernateTemplate().delete(表的映射类名,"id"),
      

  11.   

    应该是你的getMessage(id)得到的是依个null把。
    你测试一下试一试。用system.out.println();看的到的值是不是null.
      

  12.   

     你SSH整合出问题! spring的dao没有注入进来!    找找原因把!  祝你好运。  
      

  13.   

    空指针错误, 
    getMessage(id));这个没有得到对象
      

  14.   

    打断点看看哪一步出现NULL值不就知道了,楼上几位说的情况都有可能还是调试一下看看具体哪里有问题
      

  15.   

    getHibernateTemplate().delete(""),这里操作的应该是对象吧。你看看这里得到的什么值。先输出来看看
      

  16.   

    标题:急聘兼职打字员(1800元/月适合在校学生在家待业人员兼职)公司是专业为国内外出版社、印刷企业与文章小说网站提供打字录入排版校对的专业外包公司,主要提供的业务有打字、排版、校对、信息维护。公司接受2000多家客户的文字外包业务,现向全国公开急聘兼职输入员1000名。要求会打字,工作认真仔细,不限学历和年龄。由于前期工作任务有一定难度,工资也相应较高,工资130元/万字,工资通过支付宝、银行转帐、办事处专员送达方式日结。
    招聘职位:兼职打字录入员。
    职位要求:会电脑打字,懂WORD软件,上网比较熟练。地区、年龄不限。
    职位性质:公司将小说手稿扫描后,EMAIL至员工邮箱或专人送达,员工完成WORD输入后发至公司 邮箱即可,适合在校学生。
    工作地点:家里、网吧均可工作。(能上网即可)
    职位待遇:130元/万字,工资每日结算。 
    职位介绍:主要工作是负责打字、资料入录,发布信息等,工作简单,但要求细心,有责任心,为人诚实。
    申请加入请登录:www.sinvool.com/zhaopin.htm
    邮箱:[email protected]
    (绝不以任何理由收取押金,手续费,更不会拖欠工资)
      

  17.   

    getMessage(id));这个没有得到对象
    打印出来看看
      

  18.   

    不知道getHibernateTemplate().delete(getMessage(id))的getMessage(id)是怎么写的,你可以把它改成这样试试getHibernateTemplate().delete(getHibernateTemplate().load(你要删的类名.class,id));
      

  19.   

    把getMessage()的实现代码贴出来吧
      

  20.   

    delete(getMessage(id));  getMessage(id) 返回的对象应该是Object 。 也许返回类型不对 
      

  21.   

    额 好好学习下hibernate 这个问题很简单的说
    断点调试啊
      

  22.   

    对于删除操作可以先加载后删除
    就是先根据id加载,然后根据实体是否为null再进行删除操作
    这样的话可以控制一下你的异常……
      

  23.   

    你删除应该是从对象删除的getHibernateTemplate().save(transientInstance); 这里面应该放的可持久化的对象而不是一个null id 这样你删除的肯定是空值
      

  24.   

    this.getHibernateTemplate();
    应该是你的sessionFactory没注入,或者是你在使用DAO层的时候是自己new 出来的
         空指针异常不回事删除传的对象不对的。
      

  25.   

    Up java 超级群 :有时间大家共同交流 51177847
      

  26.   

    hibernate是用对象 操作数据库 不能直接传变量进行删除 应该把对应ID的一行数据都拿出来 也就是ID对应的那个对象放进去删掉 楼上很多朋友已经说了 嘿嘿 
      

  27.   

    韩国某品牌内部流出少量货源,强项是款式设计!
    http://shop35040468.taobao.com/
      

  28.   

    我也是这个问题啊   hibernateTemplate.get(class)  报空指针 就是不知道怎么解决 谁能给个正确答案
      

  29.   

    其实这就是一个延迟加载的问题。
    用单元测试的话就会看到targer是空。
      

  30.   

    getHibernateTemplate().delete();传递的是对象