197 votes

Hibernate - La mise à jour par lot a renvoyé un nombre de lignes inattendu à partir de la mise à jour : 0 nombre de lignes réel : 0 attendu : 1

Je reçois suite à une erreur d'hibernation. Je suis en mesure d'identifier la fonction qui cause le problème. Malheureusement, il y a plusieurs appels DB dans la fonction. Je ne trouve pas la ligne qui cause le problème depuis l'hibernation vidange de la session à la fin de la transaction. L'erreur d'hibernation mentionnée ci-dessous ressemble à une erreur générale. Il n'a même pas mentionné qui Bean cause le problème. Quelqu'un connaît cette erreur d'hibernation ?

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)

96voto

shreyas Points 301

J'ai obtenu la même exception lors de la suppression d'un enregistrement par Id qui n'existe pas du tout. Vérifiez donc que l'enregistrement que vous mettez à jour/supprimez existe réellement dans la base de données

20voto

cSn Points 469

Cela m'est arrivé une fois par accident lorsque j'assignais des ID spécifiques à certains objets (tests) et que j'essayais de les enregistrer dans la base de données. Le problème était que dans la base de données il y avait une politique spécifique pour la mise en place des ID des objets. Il suffit de ne pas attribuer d'ID si vous avez une politique au niveau Hibernate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X