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:
DataSource
běží v režimu automatického potvrzení, takže každý příkaz je proveden v samostatné transakciEntityManager
nebyl 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.