Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Äußere Transaktion in einem Anwendungsfall für verschachtelte Transaktionen sieht keine Aktualisierungen, die in der Datenbank gespeichert sind (JPA, MySQL, Spring Framework und Hibernate)

Ich weiß nicht, wie das "Verschachteln" von Transaktionen in Hibernate durchgeführt wird (da ich nicht glaube, dass MySQL Transaktionen tatsächlich verschachteln kann).

Ich würde also davon ausgehen, dass die zweite (verschachtelte) Transaktion eine neue Verbindung zur Datenbank sein muss (?) - andernfalls wäre es nicht möglich, die "verschachtelte" Transaktion rückgängig zu machen, ohne die "äußere" Transaktion zu beeinflussen.

Wenn dies tatsächlich der Fall ist, werden Sie wahrscheinlich von MySQLs Standard-Isolationsstufe getroffen, die REPEATABLE READ ist wodurch die äußere Transaktion keine Daten sehen kann, die nach festgeschrieben wurden diese Transaktion gestartet.

Um diese Theorie zu testen, versuchen Sie, die Isolationsstufe (der äußeren Transaktion) auf READ COMMITTED zu ändern und sehen, ob das das Problem löst.