Untuk beberapa alasan saya pikir transaksi implisit yang bergabung dengan entityManager adalah transaksi baru. Tapi Hibernasi dokumen state:"Saat Anda membuat manajer entitas di dalam transaksi, manajer entitas secara otomatis bergabung dengan transaksi saat ini."
Jadi ternyata ada transaksi lain yang sudah berjalan (tidak mengherankan) dan hasil pengambilan saya berubah tergantung pada apa yang sudah dibaca (karena database berjalan dalam mode REPEATABLE-READ.)
Dalam jangka pendek saya akan menyapu kode saya untuk secara eksplisit memulai () transaksi di mana pun itu hilang. Jangka panjang, saya akan melihat Transaksi Musim Semi untuk melihat tentang mengelola transaksi dengan cara yang lebih mudah (seperti yang disarankan dalam komentar.)