sql >> Databasteknik >  >> RDS >> Mysql

Hur kör man inbyggda SQL-frågor i samma Hibernate-transaktion?

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.



  1. Ansluter till Lotus Notes från Java

  2. Mysql COUNT(*) på flera tabeller

  3. Rekursiv mysql select?

  4. Installera MySQLdb på Mac OS X