Những Chú thích này không tạo ra hai chuỗi mà chỉ một chuỗi. Điều này có đúng / dự kiến không?
Đó là hành vi được mong đợi. Khi sử dụng @GeneratedValue(strategy = GenerationType.AUTO)
, nhà cung cấp JPA sẽ chọn một chiến lược thích hợp cho cơ sở dữ liệu cụ thể. Trong trường hợp của Oracle, đây sẽ là SEQUENCE và vì bạn không chỉ định bất cứ điều gì, Hibernate sẽ sử dụng một chuỗi toàn cục duy nhất được gọi là hibernate_sequence
.
Điều này có chính xác? Vâng, tôi không biết, nó tùy thuộc vào nhu cầu của bạn. Đề phòng trường hợp, giá trị tối đa mặc định cho một chuỗi Oracle là 1E + 27, hoặc 1.000.000.000.000.000.000.000.000.000.000.000. Đối với nhiều người như vậy là đủ.
Bây giờ, có thể sử dụng GenerationType.AUTO
và vẫn kiểm soát tên của trình tự khi cơ sở dữ liệu sử dụng các trình tự:
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
private Long id;