org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:672)
org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:789)
org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:663)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
报了这个错,网上搜了一下。到处是这个问题,但好像没有一个答案
奇怪就在,只有执行删除操作后才报这个错,再一点奇怪的就是,这个框架是以前搭建的,都用了三四回了,都没有出现过这个错误!请高手热点

解决方案 »

  1.   

    悲观锁乐观锁下面的文章参考一下:http://www.blogjava.net/zhanglijun33/archive/2006/09/15/OptimisticLockingFailure.html
      

  2.   

    这个好像没有报错啊,
       你只是在单元测试的时候,期望值与实际值不匹配而已啊
    actual row count: 0; expected: 1
    实际值为0,而期望值为1
      

  3.   

    hibernate的乐观锁异常,让我悲观中,解决方法是想办法不让其他表的相关数据记录重复就可以解决。但相关数据根本就没有重复,相关数据指的什么啊,???
      

  4.   

    关联没配置好呗!!
    ----------------------------第一宗罪------------------------------------------
    A  con FK  B,
    A删除,但是B中没删除。要是数据库没有映像只靠H---出错的概率很高。
    添加数据的时候很可能打破唯一约束。 所以要配置MANY-ONE--的唯一约束,而非一对一。
    ----------------------------第二宗罪------------------------------------------
    删除基本是实体,但是实体脱离了状态,更改后出现了主键背离了数据库,第二次COMMIT的时候
    数据出了差错,ID PRI没有了,出现了BATCH update。
    ----------------------------第三宗罪------------------------------------------
    批量操作,不慎 配置了反转,大批数据关联出现差错,甚是凄惨呀!!
    ----------------------------第四宗罪------------------------------------------
    事务压根就没提交,还堂而皇之的认为数据已经更新了!之后还在使用,session没有关闭,缓存--》LOAD,殊不知你在操作压根就没有的数据。
    ----------------------------第五宗罪------------------------------------------
    累了,不写了!!
      

  5.   

    其实还是大意出的错,忘记了scope=prototype
    <bean id="productAdminBean" class="com.flexoa.web.action.product.ProductActin" scope="prototype">
    <property name="productManager" ref="productManager" />
    </bean>
    加上了,运行就像钢铁一样强硬,怎么都不出问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!因为在配置spring的bean是忘了写scope="prototype"所以每次添加时都显示最后一次访问过的记录
    找了很长时间,原来是spring bean出了问题。 scope="prototype" 会在该类型的对象被请求时创建一个新的action对象。如果没有配置scope=prototype则添加的时候不会新建一个action,他任然会保留上次访问的过记录的信息。