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

Định cấu hình Hibernate để sử dụng SYS_GUID () của Oracle cho Khóa chính

Bạn có thể sử dụng trình tạo "hướng dẫn". Xem bài đăng này từ diễn đàn Hibernate. Có vẻ như họ đã thêm hỗ trợ cho Oracle bằng cách sử dụng SYS_GUID() một thời gian trước, nhưng tài liệu vẫn cho biết chúng chỉ hỗ trợ SQL Server và MySQL.

Tôi chưa làm việc với chú thích JPA, nhưng đây là một ví dụ sử dụng cấu hình XML:

<id name="PRODUCT_ID">
  <generator class="guid" />
</id>

CHỈNH SỬA: Liên quan đến câu hỏi thứ hai của bạn, tôi nghĩ bạn đang hỏi tại sao Hibernate không thể làm điều gì đó như thế này:

INSERT INTO PRODUCT (PRODUCT_ID, /* etc */)
SELECT SYSGUID(), /* etc */

Lý do là Hibernate phải biết ID của đối tượng là gì. Ví dụ:hãy xem xét tình huống sau:

  1. Bạn tạo một đối tượng Sản phẩm mới và lưu nó. Oracle chỉ định ID.
  2. Bạn tách Sản phẩm khỏi phiên Hibernate.
  3. Sau đó, bạn đính kèm lại nó và thực hiện một số thay đổi.
  4. Bây giờ bạn muốn duy trì những thay đổi đó.

Nếu không biết ID, Hibernate không thể làm điều này. Nó cần ID để đưa ra câu lệnh CẬP NHẬT. Vì vậy, việc triển khai org.hibernate.id.GUIDGenerator phải tạo ID trước, sau đó sử dụng lại ID đó trong câu lệnh INSERT.

Đây cũng là lý do tại sao Hibernate không thể thực hiện bất kỳ lô nào nếu bạn sử dụng ID do cơ sở dữ liệu tạo (bao gồm tự động tăng trên cơ sở dữ liệu hỗ trợ ID đó). Sử dụng một trong các trình tạo hilo hoặc một số cơ chế ID do Hibernate tạo khác, là cách duy nhất để có được hiệu suất tốt khi chèn nhiều đối tượng cùng một lúc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để trích xuất một chuỗi con từ một chuỗi trong Oracle / SQLite

  2. Làm cách nào để khắc phục nguyên nhân gây ra ngoại lệ Hibernate IllegalArgumentException xảy ra khi gọi setter?

  3. Yêu cầu khôi phục trước khi sao lưu

  4. oracle - chuyển đổi nhiều định dạng ngày tháng sang một ngày được định dạng duy nhất

  5. Từng bước cài đặt R12.2.6 EBS trên Virtual Box