Om du inte använder behållarhanterade transaktioner då måste du lägga till transaktionspolicyn också:
@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)
Jag har bara sett detta fenomen i två situationer:
-
DataSource
körs i auto-commit-läge, därför exekveras varje sats i en separat transaktion EntityManager
konfigurerades inte med@Transactional
, men då kan bara frågor köras eftersom alla DML-operationer skulle leda till ett undantag som krävs för transaktionen.
Låt oss sammanfatta att du har ställt in följande vilolägesegenskaper:
hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction
Där den slutliga egenskapen måste ställas in med din Application Server UserTransaction JNDI-namnnyckel.
Du kan också använda:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
eller någon annan strategi enligt din nuvarande Java EE Application Server.