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

La transaction externe dans un cas d'utilisation de transaction imbriquée ne voit pas les mises à jour persistantes dans la base de données (JPA, MySQL, Spring Framework et Hibernate)

Je ne sais pas comment la transaction "imbriquée" est effectuée dans Hibernate (car je ne pense pas que MySQL puisse réellement imbriquer les transactions).

Je suppose donc que la deuxième transaction (imbriquée) doit (?) Être une nouvelle connexion à la base de données - sinon, il ne serait pas possible d'annuler la transaction "imbriquée" sans affecter la transaction "externe".

Si c'est effectivement le cas, alors vous êtes probablement touché par le niveau d'isolation par défaut de MySQL qui est REPEATABLE READ qui ne laissera pas la transaction externe voir les données qui ont été validées après cette transaction a commencé.

Pour tester cette théorie, essayez de changer le niveau d'isolement (de la transaction externe) en READ COMMITTED et voyez si cela résout le problème.