2010-05-10 40 views
6

Chúng tôi đang gặp sự cố trong đó chúng tôi có các lớp con Sự kiện sử dụng GenerationType.TABLE để tạo khóa chính và khi chúng tôi khởi động lại máy chủ, chúng tôi sẽ nhận được các lỗi khóa chính.Hibernate duplicate primary key khi khởi động lại bằng cách sử dụng GenerationType.TABLE

Chúng tôi đang sử dụng SQL Server và Hibernate phiên bản 3.5.1-Final.

Đây là những gì chú thích Hibernate của chúng tôi như sau:

@Entity 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public abstract class Event { 

    @Id 
    @GeneratedValue(strategy = GenerationType.TABLE) 
    private long eventID; 

chúng tôi không chỉ định allocationSize vì vậy chúng tôi đang sử dụng giá trị mặc định. Bảng tuần tự ngủ đông tăng nhưng có vẻ như khi khởi động lại, nó đã sử dụng lại ID.

Trả lời

0

Thử GenerationType.AUTO hoặc SEQUENCE. AUTO có thể hoạt động thông qua phép thuật ngủ đông, nhưng SEQUENCE sẽ tạo ra, một cách vui vẻ, một chuỗi trong cơ sở dữ liệu mà nó sẽ sử dụng để lấy các ID duy nhất. Bạn đang sử dụng SQL Server nào?

+0

Bạn không thể sử dụng GenerationType.AUTO với InheritanceType.TABLE_PER_SUBCLASS. Google "Không thể sử dụng tạo khóa cột danh tính với ánh xạ cho" – ndtreviv

Các vấn đề liên quan