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.