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

New EntityManager obtient parfois des données obsolètes de MySQL

Pour une raison quelconque, je pensais que la transaction implicite entityManager joins était une nouvelle transaction. Mais Documents Hibernate state :"Lorsque vous créez un gestionnaire d'entités dans une transaction, le gestionnaire d'entités rejoint automatiquement la transaction en cours."

Donc, apparemment, il y a une autre transaction déjà en cours d'exécution (pas surprenant) et mes résultats de récupération changent en fonction de ce qu'il a déjà lu (car la base de données fonctionne en mode REPEATABLE-READ.)

À court terme, je balayerai mon code pour explicitement commencer () les transactions partout où cela manque. À plus long terme, j'examinerai Spring Transactions pour voir comment gérer les transactions de manière plus infaillible (comme cela a été suggéré dans les commentaires.)