Als u door containers beheerde transacties dan moet u ook het transactiebeleid toevoegen:
@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)
Ik heb dit fenomeen slechts in twee situaties gezien:
- de
DataSource
draait in de auto-commit-modus, daarom wordt elke instructie uitgevoerd in een afzonderlijke transactie - de
EntityManager
was niet geconfigureerd met@Transactional
, maar dan kunnen alleen query's worden uitgevoerd, omdat elke DML-bewerking uiteindelijk een uitzondering voor transactie vereist.
Laten we samenvatten dat u de volgende sluimerstand-eigenschappen hebt ingesteld:
hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction
Waar de laatste eigenschap moet worden ingesteld met uw Application Server UserTransaction JNDI-naamgevingssleutel.
Je zou ook de:
. kunnen gebruikenhibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
of een andere strategie volgens uw huidige Java EE Application Server.