我发现以下Hibernate 错误.我能够确定导致问题的功能.不幸的是,函数中有几个DB调用.由于hibernate在事务结束时刷新会话,我无法找到导致问题的行.下面提到的hibernate错误看起来像一般错误.它甚至没有提到哪个Bean导致了这个问题.有人知道这个Hibernate 错误吗?

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)

推荐答案

如果没有事务的代码和映射,调查问题几乎是不可能的.

但是,要更好地处理问题原因,请try 以下操作:

  • 在hibernate配置中,设置hibernate.show_sql为true.这将向您显示执行的SQL以及导致问题的SQL.
  • 将Spring和Hibernate的日志(log)级别设置为DEBUG,这同样会让您更好地了解是哪一行导致了问题.
  • 创建复制问题的单元测试,而无需在Spring中配置事务管理器.这应该会让您更好地了解令人不快的代码行.

希望这能帮上忙.

Java相关问答推荐

无法从TemporalAccessor获取Instant:{},ISO解析为2024-04- 25 T14:32:42类型为java.time. form.Parsed

BiPredicate和如何使用它

找到允许的最大底片

如何使用Java API在Oracle ODI中运行模拟?

如何配置ActiveMQ Artemis以使用AMQP 1.0和其他协议与Java

我找不到&Quot;配置&的位置

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

使用用户引入的参数生成人员数组

Spring-Boot Kafka应用程序到GraalVM本机映像-找不到org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier

有没有可能在时间范围内得到多种解决方案?

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

在settings.gradle.kts和Build.gradle.kts中使用公共变量

舰队运行配置Maven版本

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

从Spring6中的JPMS模块读取类时出现问题

Android Studio模拟器没有互联网

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

读取ConcurrentHashMap中的可变对象

@此处不能应用可为null的批注

将天数添加到ZonedDateTime不会更改时间