Ik weet niet hoe de transactie "nesten" wordt gedaan in Hibernate (omdat ik niet geloof dat MySQL transacties daadwerkelijk kan nesten).
Dus ik neem aan dat de tweede (geneste) transactie (?) een nieuwe verbinding met de database moet zijn - anders zou het niet mogelijk zijn om de "geneste" transactie terug te draaien zonder de "buitenste" transactie te beïnvloeden.
Als dit inderdaad het geval is, wordt u waarschijnlijk getroffen door het standaardisolatieniveau van MySQL, namelijk REPEATABLE READ
waardoor de buitenste transactie geen gegevens kan zien die na . zijn vastgelegd die transactie begon.
Om deze theorie te testen, probeer het isolatieniveau (van de buitenste transactie) te veranderen in READ COMMITTED
en kijk of dat het probleem oplost.