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

Chọn để cập nhật bỏ qua bị khóa từ cấp JPA

Hibernate cung cấp chế độ Khóa UPGRADE_SKIPLOCKED.

Sử dụng JPA và Hibernate, để tạo "SKIP_LOCKED" theo Hibernate LockMode tài liệu, bạn phải kết hợp PESSIMISTIC_WRITE JPA LockModeType :

entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);

và cài đặt Khóa thời gian chờ, chẳng hạn như trong Persence.xml cho đơn vị độ bền của bạn:

<properties>
   <property name="javax.persistence.query.timeout" value="-2"/>
</properties>

(Lưu ý rằng bạn cũng có thể định cấu hình LockMode này cho truy vấn phức tạp)

SKIP LOCKED không phải là một phần của ANSI SQL. Một số RDBMS như sau cung cấp tính năng này như một tính năng cụ thể:

Vì vậy, với JPA thuần túy, không thể chỉ định "SKIP LOCKED" trong các truy vấn. Thực tế, như được ghi lại trong LockModeType , JPA 2.1 chỉ hỗ trợ những điều sau:

  • KHÔNG CÓ
  • TỐI ƯU
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • ĐỌC
  • VIẾT

Tuy nhiên, để bật SKIP LOCKED trong truy vấn của mình, bạn có thể sử dụng các lựa chọn thay thế sau:

  • Sử dụng tính năng triển khai JPA cụ thể, chẳng hạn như Hibernate LockMode cho phép chỉ định SKIP ĐÃ KHÓA qua truy vấn JPA, nhờ sự kết hợp của PESSIMISTIC_WRITE Cài đặt cụ thể của LockModeType Lock Timeout như được mô tả ở trên
  • Tạo một truy vấn SQL gốc như bạn đã làm


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL Oracle được tham số hóa trong Java?

  2. Làm thế nào để tạo đệ quy một khối mã pl / sql mà một khối làm việc với một số câu được chọn?

  3. Cách gọi thủ tục có tham số ra làm kiểu bảng từ một lớp Java

  4. Oracle SQL:Hợp nhất các hàng thành một hàng

  5. Bất kỳ tác động hiệu suất nào trong Oracle khi sử dụng LIKE 'string' vs ='string'?