Mysql
 sql >> Database >  >> RDS >> Mysql

La transazione esterna in un caso d'uso della transazione nidificata non vede gli aggiornamenti persistenti nel database (JPA, MySQL, Spring Framework e Hibernate)

Non so come venga eseguita la "nidificazione" della transazione in Hibernate (poiché non credo che MySQL possa effettivamente nidificare le transazioni).

Quindi suppongo che la seconda transazione (nidificata) debba (?) essere una nuova connessione al database, altrimenti non sarebbe possibile eseguire il rollback della transazione "nidificata" senza influire sulla transazione "esterna".

Se questo è davvero il caso, probabilmente sei colpito dal livello di isolamento predefinito di MySQL che è REPEATABLE READ che non consentirà alla transazione esterna di vedere i dati che sono stati impegnati dopo quella transazione è iniziata.

Per testare questa teoria, prova a cambiare il livello di isolamento (della transazione esterna) in READ COMMITTED e vedi se questo risolve il problema.