Tôi không biết giao dịch "lồng vào nhau" được thực hiện như thế nào trong Hibernate (vì tôi không tin rằng MySQL thực sự có thể lồng các giao dịch).
Vì vậy, tôi sẽ giả định rằng giao dịch thứ hai (lồng nhau) phải (?) Là một kết nối mới với cơ sở dữ liệu - nếu không sẽ không thể khôi phục giao dịch "lồng nhau" mà không ảnh hưởng đến giao dịch "bên ngoài".
Nếu đây thực sự là trường hợp, thì có thể bạn đã gặp phải mức cô lập mặc định của MySQL là REPEATABLE READ
điều này sẽ không cho phép giao dịch bên ngoài thấy bất kỳ dữ liệu nào đã được cam kết sau giao dịch đó đã bắt đầu.
Để kiểm tra lý thuyết này, hãy thử thay đổi mức cô lập (của giao dịch bên ngoài) thành READ COMMITTED
và xem liệu điều đó có giải quyết được vấn đề hay không.