Vì một số lý do, tôi nghĩ rằng thực thể giao dịch ngầm màManager tham gia là một giao dịch mới. Nhưng Hibernate docs trạng thái:"Khi bạn tạo trình quản lý thực thể bên trong một giao dịch, trình quản lý thực thể sẽ tự động tham gia giao dịch hiện tại."
Vì vậy, rõ ràng là có một giao dịch khác đang chạy (không có gì đáng ngạc nhiên) và kết quả tìm nạp của tôi thay đổi tùy thuộc vào những gì nó đã đọc (vì cơ sở dữ liệu đang chạy ở chế độ REPEATABLE-READ.)
Trong ngắn hạn, tôi sẽ quét qua mã của mình để bắt đầu () các giao dịch một cách rõ ràng ở bất cứ nơi nào bị thiếu. Về lâu dài, tôi sẽ xem xét các Giao dịch mùa xuân để xem về cách quản lý các giao dịch theo cách dễ hiểu hơn (như đã được đề xuất trong các nhận xét.)