sql >> Databáze >  >> RDS >> Mysql

Jak spustit nativní SQL dotazy ve stejné transakci Hibernate?

V případě, že nepoužíváte kontejnerem spravované transakce pak musíte přidat také zásady transakce:

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

Tento jev jsem viděl pouze ve dvou situacích:

  • DataSource běží v režimu automatického potvrzení, takže každý příkaz je proveden v samostatné transakci
  • EntityManager nebyl nakonfigurován pomocí @Transactional , ale pak lze spouštět pouze dotazy, protože jakákoli operace DML by skončila vyvoláním výjimky požadované transakce.

Shrňme, že jste nastavili následující vlastnosti hibernace:

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

Kde musí být konečná vlastnost nastavena pomocí názvového klíče JNDI Application Server UserTransaction.

Můžete také použít:

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

nebo nějakou jinou strategii podle vašeho aktuálního aplikačního serveru Java EE.



  1. MySQL porovnává znaky Unicode s verzí ASCII

  2. java.lang.ClassNotFoundException:org.postgresql.Driver, Android

  3. Nastavení časového limitu pro SQL Server

  4. Jak opravit „příkaz EXECUTE selhal, protože jeho klauzule WITH RESULT SETS specifikovala 2 sloupce pro sadu výsledků…“ Msg 11537 v SQL Server