2010-05-10 10 views
6

Stiamo riscontrando un problema in cui sono presenti sottoclassi di eventi che utilizzano GenerationType.TABLE per generare la chiave primaria e quando riavviamo i server vengono visualizzati errori duplicati della chiave primaria.Hibernate duplica chiave primaria al riavvio utilizzando GenerationType.TABLE

Stiamo utilizzando SQL Server e Hibernate versione 3.5.1-Final.

Ecco quali sono le nostre annotazioni Hibernate assomigliano:

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

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

non specifichiamo l'allocationSize quindi stiamo utilizzando il valore predefinito. La tabella delle sequenze di ibernazione incrementa ma sembra che al riavvio stia riutilizzando gli ID già utilizzati.

risposta

0

Provare GenerationType.AUTO o SEQUENCE. AUTO può funzionare tramite la magia di ibernazione, ma SEQUENCE dovrebbe creare, stranamente, una sequenza nel database che utilizzerà per ottenere ID univoci. Quale server SQL stai usando?

+0

Non è possibile utilizzare GenerationType.AUTO con InheritanceType.TABLE_PER_SUBCLASS. Google "Impossibile utilizzare la generazione della chiave della colonna Identity con mapping for" – ndtreviv

Problemi correlati