Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để chạy các truy vấn SQL gốc trong cùng một giao dịch Hibernate?

Trong trường hợp bạn không sử dụng giao dịch được quản lý vùng chứa thì bạn cũng cần thêm chính sách giao dịch:

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

Tôi chỉ thấy hiện tượng này trong hai tình huống:

  • DataSource đang chạy ở chế độ tự động cam kết, do đó mỗi câu lệnh được thực hiện trong một giao dịch riêng biệt
  • EntityManager không được định cấu hình bằng @Transactional , nhưng sau đó chỉ có thể chạy các truy vấn vì bất kỳ hoạt động DML nào cuối cùng cũng đưa ra một ngoại lệ bắt buộc giao dịch.

Hãy tóm tắt lại bạn đã đặt các thuộc tính Hibernate sau:

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

Nơi thuộc tính cuối cùng phải được đặt bằng khóa đặt tên UserTransaction JNDI của Máy chủ Ứng dụng của bạn.

Bạn cũng có thể sử dụng:

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

hoặc một số chiến lược khác theo Máy chủ ứng dụng Java EE hiện tại của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhận bản ghi giữa 2 ngày trong MySQL

  2. Cách thoát từ khóa giá trị trong mysql khi sử dụng câu lệnh Chọn

  3. Làm thế nào để chuyển các giá trị được phân tách bằng dấu phẩy cho thủ tục được lưu trữ trong MySql?

  4. MySQL - Tham gia và đếm các hàng từ một bảng khác

  5. PHP:mysql v mysqli v pdo