sql >> Database >  >> RDS >> Mysql

Hoe native SQL-query's in dezelfde Hibernate-transactie uit te voeren?

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 gebruiken
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup

of een andere strategie volgens uw huidige Java EE Application Server.



  1. 8 manieren om dagen aan een datum toe te voegen in MariaDB

  2. Hoe kan ik een printstatement simuleren in MySQL?

  3. Spring-batch met kolomalias als sorteersleutel - onjuist waar-instructie

  4. Proactieve SQL Server-statuscontroles, deel 4:ERRORLOG