休眠 \- 批量更新从更新返回意外的行数:0 实际行数:0 预期:1

新手上路,请多包涵

我得到以下休眠错误。我能够识别导致问题的功能。不幸的是,函数中有几个 DB 调用。我无法找到导致问题的行,因为在事务结束时休眠刷新会话。下面提到的休眠错误看起来像一般错误。它甚至没有提到哪个 Bean 导致了这个问题。任何人都熟悉这个休眠错误?

 org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
        at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:93)
        at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:79)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransacti
onManager.java:500)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManag
er.java:473)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(Transaction
AspectSupport.java:267)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)

原文由 Sujee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 522
2 个回答

如果没有交易的代码和映射,几乎不可能调查问题。

但是,为了更好地了解导致问题的原因,请尝试以下操作:

  • 在您的休眠配置中,将 hibernate.show_sql 设置为 true。这应该向您显示执行并导致问题的 SQL。
  • 将 Spring 和 Hibernate 的日志级别设置为 DEBUG,这将再次让您更好地了解导致问题的行。
  • 创建一个单元测试来复制问题,而无需在 Spring 中配置事务管理器。这应该让您更好地了解有问题的代码行。

希望有帮助。

原文由 beny23 发布,翻译遵循 CC BY-SA 3.0 许可协议

我在删除根本不存在的 Id 记录时遇到了同样的异常。因此,请检查您正在更新/删除的记录是否确实存在于数据库中

原文由 shreyas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题