Ausgabe
Ich erhalte folgenden Hibernate-Fehler. Ich kann die Funktion identifizieren, die das Problem verursacht. Leider gibt es mehrere DB-Aufrufe in der Funktion. Ich kann die Zeile, die das Problem verursacht, nicht finden, da die Sitzung am Ende der Transaktion im Ruhezustand geleert wird. Der unten erwähnte Ruhezustandsfehler sieht aus wie ein allgemeiner Fehler. Es wird nicht einmal erwähnt, welche Bean das Problem verursacht. Kennt jemand diesen Hibernate-Fehler?
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)
Lösung
Ohne Code und Zuordnungen für Ihre Transaktionen ist es nahezu unmöglich, das Problem zu untersuchen.
Um jedoch die Ursachen des Problems besser in den Griff zu bekommen, versuchen Sie Folgendes:
- Setzen Sie in Ihrer Hibernate-Konfiguration hibernate.show_sql auf true. Dies sollte Ihnen das SQL zeigen, das ausgeführt wird und das Problem verursacht.
- Stellen Sie die Protokollebenen für Spring und Hibernate auf DEBUG ein, auch dies gibt Ihnen eine bessere Vorstellung davon, welche Zeile das Problem verursacht.
- Erstellen Sie einen Komponententest, der das Problem repliziert, ohne einen Transaktionsmanager in Spring zu konfigurieren. Dies sollte Ihnen eine bessere Vorstellung von der fehlerhaften Codezeile geben.
Ich hoffe, das hilft.
Beantwortet von – beny23
Antwort geprüft von – Gilberto Lyons (FixError Admin)