2010-05-10 21 views
6

Występuje problem, w którym mamy podklasy zdarzeń, które generują klucz podstawowy za pomocą GenerationType.TABLE, a po ponownym uruchomieniu serwerów uzyskujemy zduplikowane błędy klucza głównego.Powtórz podstawowy klucz hibernacji przy ponownym uruchomieniu za pomocą GenerationType.TABLE

Używamy SQL Server i Hibernate w wersji 3.5.1-Final.

Oto co nasze adnotacje Hibernate wyglądać następująco:

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

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

nie określił allocationSize więc używamy wartość domyślną. Tabela sekwencji hibernacji robi przyrost, ale wygląda na to, że przy ponownym uruchomieniu ponownie wykorzystuje już używane identyfikatory.

Odpowiedz

0

Wypróbuj GenerationType.AUTO lub SEQUENCE. AUTO może działać poprzez magię hibernacji, ale SEQUENCE powinna stworzyć, zabawnie, sekwencję w bazie danych, której użyje do uzyskania unikalnych identyfikatorów. Z jakiego serwera SQL korzystasz?

+0

Nie można użyć GenerationType.AUTO z InheritanceType.TABLE_PER_SUBCLASS. Google "Nie można użyć generowania kluczy kolumn identyfikacyjnych z odwzorowaniem dla" – ndtreviv

Powiązane problemy