V případě, že nepoužíváte kontejnerem spravované transakce pak musíte přidat také zásady transakce:
@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)
Tento jev jsem viděl pouze ve dvou situacích:
DataSourceběží v režimu automatického potvrzení, takže každý příkaz je proveden v samostatné transakciEntityManagernebyl nakonfigurován pomocí@Transactional, ale pak lze spouštět pouze dotazy, protože jakákoli operace DML by skončila vyvoláním výjimky požadované transakce.
Shrňme, že jste nastavili následující vlastnosti hibernace:
hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction
Kde musí být konečná vlastnost nastavena pomocí názvového klíče JNDI Application Server UserTransaction.
Můžete také použít:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
nebo nějakou jinou strategii podle vašeho aktuálního aplikačního serveru Java EE.