Saya tidak tahu bagaimana transaksi "bersarang" dilakukan di Hibernate (karena saya tidak percaya MySQL benar-benar dapat menyarangkan transaksi).
Jadi saya akan berasumsi bahwa transaksi (bersarang) kedua harus (?) menjadi koneksi baru ke database - jika tidak, tidak mungkin untuk mengembalikan transaksi "bersarang" tanpa mempengaruhi transaksi "luar".
Jika memang demikian, maka Anda mungkin terkena tingkat isolasi default MySQL yaitu REPEATABLE READ
yang tidak akan membiarkan transaksi luar melihat data apa pun yang telah dilakukan setelah transaksi itu dimulai.
Untuk menguji teori ini, coba ubah tingkat isolasi (dari transaksi luar) menjadi READ COMMITTED
dan lihat apakah itu menyelesaikan masalah.