Jeg ved ikke, hvordan transaktionen "nesting" udføres i Hibernate (da jeg ikke tror på, at MySQL faktisk kan indlejre transaktioner).
Så jeg vil antage, at den anden (indlejrede) transaktion skal (?) være en ny forbindelse til databasen - ellers ville det ikke være muligt at rulle den "indlejrede" transaktion tilbage uden at påvirke den "ydre" transaktion.
Hvis dette virkelig er tilfældet, så er du sandsynligvis ramt af MySQL's standard isolationsniveau, som er REPEATABLE READ
som ikke lader den ydre transaktion se nogen data, der er blevet begået efter den transaktion startede.
For at teste denne teori, prøv at ændre isolationsniveauet (for den ydre transaktion) til READ COMMITTED
og se om det løser problemet.