Не знам как се извършва "влагането" на транзакциите в Hibernate (тъй като не вярвам, че MySQL всъщност може да вмъква транзакции).
Така че бих предположил, че втората (вложена) транзакция трябва (?) да е нова връзка с базата данни – в противен случай не би било възможно да се върне обратно „вложената“ транзакция, без да се засяга „външната“ транзакция.
Ако това наистина е така, тогава вероятно сте ударени от нивото на изолация по подразбиране на MySQL, което е REPEATABLE READ
което няма да позволи на външната транзакция да види никакви данни, които са били ангажирани след тази транзакция е започнала.
За да тествате тази теория, опитайте да промените нивото на изолация (на външната транзакция) на READ COMMITTED
и вижте дали това решава проблема.