sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kører native SQL-forespørgsler i den samme Hibernate-transaktion?

I tilfælde af at du ikke bruger containerstyrede transaktioner så skal du også tilføje transaktionspolitikken:

@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)

Jeg har kun set dette fænomen i to situationer:

  • Datakilde kører i auto-commit-tilstand, og derfor udføres hver sætning i en separat transaktion
  • EntityManager var ikke konfigureret med @Transactional , men så kan kun forespørgsler køres, da enhver DML-handling ville ende med at give en transaktionskrævet undtagelse.

Lad os opsummere, at du har indstillet følgende Dvale-egenskaber:

hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction

Hvor den endelige egenskab skal indstilles med din Application Server UserTransaction JNDI-navngivningsnøgle.

Du kan også bruge:

hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup

eller en anden strategi i henhold til din nuværende Java EE Application Server.



  1. Kør SQL-forespørgsel ved opstart af MySQL-tjeneste

  2. Android sqlite db.query fører til CursorIndexOutOfBoundsException

  3. Sådan synkroniseres udviklings- og produktionsdatabase

  4. MYSQLi-fejl:Brugeren har allerede mere end 'max_user_connections' aktive forbindelser