Jika Anda tidak menggunakan transaksi terkelola container maka Anda perlu menambahkan kebijakan transaksi juga:
@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)
Saya hanya melihat fenomena ini dalam dua situasi:
DataSourcesedang berjalan dalam mode komit otomatis, maka setiap pernyataan dieksekusi dalam transaksi terpisahEntityManagertidak dikonfigurasi dengan@Transactional, tetapi hanya kueri yang dapat dijalankan karena operasi DML apa pun pada akhirnya akan menimbulkan pengecualian yang diperlukan transaksi.
Mari kita rekap Anda telah mengatur properti Hibernate berikut:
hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction
Di mana properti final harus disetel dengan kunci penamaan JNDI UserTransaction Server Aplikasi Anda.
Anda juga dapat menggunakan:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
atau beberapa strategi lain sesuai dengan Server Aplikasi Java EE Anda saat ini.