Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menjalankan kueri SQL asli dalam transaksi Hibernate yang sama?

Jika Anda tidak menggunakan transaksi terkelola container maka Anda perlu menambahkan kebijakan transaksi juga:

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

Saya hanya melihat fenomena ini dalam dua situasi:

  • DataSource sedang berjalan dalam mode komit otomatis, maka setiap pernyataan dieksekusi dalam transaksi terpisah
  • EntityManager tidak dikonfigurasi dengan @Transactional , tetapi hanya kueri yang dapat dijalankan karena operasi DML apa pun pada akhirnya akan menimbulkan pengecualian yang diperlukan transaksi.

Mari kita rekap Anda telah mengatur properti Hibernate berikut:

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

Di mana properti final harus disetel dengan kunci penamaan JNDI UserTransaction Server Aplikasi Anda.

Anda juga dapat menggunakan:

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

atau beberapa strategi lain sesuai dengan Server Aplikasi Java EE Anda saat ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan MySQL dan SQL Server

  2. Apakah mysql_insert_id aman digunakan?

  3. Prosedur tersimpan yang secara otomatis menghapus baris yang lebih lama dari 7 hari di MYSQL

  4. MySQL Daftar Semua Prosedur

  5. Membandingkan tanggal di MySQL mengabaikan bagian waktu dari bidang DateTime