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

javax.persistence.EntityExistsException với SequenceGenerator

allocationSize tham số phải khớp với INCREMENT BY giá trị của chuỗi.

Nó hoạt động theo cách Hibernate nhận một giá trị từ chuỗi (từ cơ sở dữ liệu), sau đó giữ giá trị đó trong bộ nhớ và tạo ra X số nhận dạng tiếp theo (trong đó X =deliverySize) tăng giá trị này lên 1 trong bộ nhớ, mà không tiếp cận cơ sở dữ liệu.

Khi Hibernate tạo số nhận dạng X, nó sẽ nhận giá trị tiếp theo từ chuỗi và tạo các số nhận dạng X mới, tăng giá trị đó lên 1

Một ví dụ đơn giản - giả sử rằng:

  • @SequenceGenerator( ....allocationSize=5 ...)
  • CREATE SEQUENCE .... INCREMENT BY 1 ...

Trong trường hợp trên Hibernate:

  1. Tìm nạp số đầu tiên từ chuỗi - giả sử NextVal = 1 và lưu trữ nó trong bộ nhớ
  2. Tạo allocationSize=5 tiếp theo số nhận dạng tăng giá trị trên thêm 1, nghĩa là:Id = 1, 2, 3, 4, 5
  3. Tìm nạp số tiếp theo từ chuỗi - vì INCREMENT BY 1 , nextVal sẽ là:2
  4. Tạo allocationSize=5 tiếp theo số nhận dạng tăng giá trị trên 1, nghĩa là:Id = 2, 3, 4, 5, 6

Như bạn có thể thấy, nó sẽ gây ra lỗi dulicate.

Bây giờ hãy xem xét trường hợp này:

  • @SequenceGenerator( ....allocationSize=5 ...)
  • CREATE SEQUENCE .... INCREMENT BY 5 ...

Trong trường hợp này là Hibernate:

  1. Tìm nạp số đầu tiên từ chuỗi - giả sử NextVal = 1 và lưu trữ nó trong bộ nhớ
  2. Tạo allocationSize=5 tiếp theo số nhận dạng tăng giá trị trên thêm 1, nghĩa là:Id = 1, 2, 3, 4, 5
  3. Tìm nạp số tiếp theo từ chuỗi - vì INCREMENT BY 5 , nextVal sẽ là:6
  4. Tạo allocationSize=5 tiếp theo số nhận dạng tăng giá trị trên 1, nghĩa là:Id = 6, 7, 8, 9, 10

Trong trường hợp này không có lỗi trùng lặp.

Trường hợp cuối cùng có nhược điểm là nếu trình tự được sử dụng bên ngoài Hibernate, thì trình tự sẽ tạo ra khoảng trống.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quá trình nâng cấp từng bước lên R12.2 Nâng cấp phần -2 (Trình điều khiển Nâng cấp Chính cho R12.2.0)

  2. Làm thế nào tôi có thể viết SQL trong Oracle trong trường hợp của tôi?

  3. Làm cách nào để phân tích cú pháp chuỗi JSON trong PL / SQL

  4. Bắt đầu với Cơ sở dữ liệu tự trị của Oracle trên Đám mây

  5. Làm cách nào để gỡ cài đặt thủ công Oracle?