求助高手帮忙看下这个报错,几乎所有页面都一样。我怀疑是什么锁死了,求教解决办法
org.hibernate.StaleStateException: Unexpected row count: 0 expected: 1
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(I)V(NonBatchingBatcher.java:27)
at org.hibernate.persister.entity.AbstractEntityPersister.delete(Ljava.io.Serializable;Ljava.lang.Object;ILjava.lang.Object;Ljava.lang.String;Lorg.hibernate.engine.SessionImplementor;)V(AbstractEntityPersister.java:2291)
at org.hibernate.persister.entity.AbstractEntityPersister.delete(Ljava.io.Serializable;Ljava.lang.Object;Ljava.lang.Object;Lorg.hibernate.engine.SessionImplementor;)V(AbstractEntityPersister.java:2440)
at org.hibernate.action.EntityDeleteAction.execute()V(EntityDeleteAction.java:73)
at org.hibernate.engine.ActionQueue.execute(Lorg.hibernate.action.Executable;)V(ActionQueue.java:248)
at org.hibernate.engine.ActionQueue.executeActions(Ljava.util.List;)V(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions()V(ActionQueue.java:144)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(Lorg.hibernate.event.EventSource;)V(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(Lorg.hibernate.event.FlushEvent;)V(Optimized Method)
at org.hibernate.impl.SessionImpl.flush()V(SessionImpl.java:985)
at com.dao.HibernateSessionFactory.getSession()Lorg.hibernate.Session;(HibernateSessionFactory.java:60)
at com.dao.BaseHibernateDAO.getSession()Lorg.hibernate.Session;(BaseHibernateDAO.java:13)
at jsp_servlet.__services._jspService(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(__services.java:156)
at weblogic.servlet.jsp.JspBase.service(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava.lang.Object;(ServletStubImpl.java:996)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;Lweblogic.servlet.internal.FilterChainImpl;)V(Optimized Method)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(Optimized Method)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava.lang.Object;(Optimized Method)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.subject.AbstractSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(Optimized Method)
at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(Optimized Method)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic.servlet.internal.ServletRequestImpl;Lweblogic.servlet.internal.ServletResponseImpl;)V(Optimized Method)
at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic.kernel.ExecuteThread;)V(Optimized Method)
at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(Optimized Method)
at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source

解决方案 »

  1.   

     你看一下你的映射文件有没有配好关联关系。也就是表和表之间的关系。
    在<many-to-one>中加个属性lazy="false"看看啊 
      

  2.   

    出现org.hibernate.StaleStateException: Unexpected row count: 0 expected: 1异常的原因:
    1.使用的是hibernate的saveOrUpdate方法保存实例。saveOrUpdate方法要求ID为null时才执行SAVE,在其它情况下执行UPDATE。在保存实例的时候是新增,但你的ID不为null,所以使用的是UPDATE,但是数据库里没有主键相关的值,所以出现异常。 
      

  3.   

    已经正常运行过2个月了,映射应该不会错掉吧今天不知道客户操作过什么就这样了
    我的配置已经是default-lazy="false"
    补充下状况:
    进SQL2005查看表数据,发现报错:已超过了锁请求超时时段
      

  4.   

    谢谢关注
    我重启了下SQL服务。现在项目是没问题了
    但是不知道是不是因为大家说的主键不存在的关系。还是得查下根本原因,不然以后还得SQL被锁