Oracle
 sql >> Base de données >  >> RDS >> Oracle

Hibernate enregistre les données obsolètes avec hibernate.jdbc.batch_versioned_data

Le pilote oracle doit renvoyer le nombre de lignes correct. Je serai surpris si ce n'est pas le cas. Avez-vous pu confirmer que les résultats du pilote sont corrects ? Vous pouvez activer la journalisation Hibernate pour vérifier cela.

Deux choses à vérifier :

  1. Enregistrez le SQL réel envoyé à la base de données et vérifiez que la colonne de version est mentionnée dans la clause where. Vous ne savez pas si les SQL sont enregistrés par la journalisation Hibernate avec le traitement par lots activé, vous devrez peut-être recourir à une autre manière de journaliser les SQL (par exemple, p6spy)

  2. Si le nombre de lignes est renvoyé correctement lors des mises à jour simultanées, l'application fonctionne correctement. Confirmez cela en vérifiant que les valeurs de la colonne de version sont mises à jour corrigées.

Mettre à jour Selon le lien suivant, ce problème était présent avec le pilote Oracle jusqu'à 11g et corrigé dans la version 12c

https://hibernate.atlassian.net/browse/HHH-3360

Pour les versions antérieures d'Oracle, certaines informations supplémentaires devraient être utiles, c'est-à-dire qu'une solution personnalisée est fournie.

Ressources supplémentaires :https://hibernate.atlassian.net/browse/HHH-5070