2016-06-30 22 views
0

Ich versuche, JPA zu verwenden IDs von Sequenzen in der Datenbank (Oracle 9i)JPA - generierte ID aus Sequenz ist immer 0

Von zu erzeugen, was fand ich hier und da, hier ist die Gruppe von Anmerkungen I habe auf meinem ID-Variable:

@Id 
@SequenceGenerator(name="PROCEDURENORMALE_SEQ_GEN", sequenceName = "PROCEDURENORMALE_SEQ") 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "PROCEDURENORMALE_SEQ_GEN") 
@Column(name = "IDPROCEDURENORMALE", unique = true, nullable = false, precision = 10, scale = 0) 
private long idProcedureNormale; 

Jedes Mal, wenn ich ein neues Objekt erstellen, diese ID immer auf 0 gesetzt ist, und aus diesem Grunde kann ich keine Daten bestehen bleiben. Ich habe versucht, die Strategie von GenerationType.SEQUENCE zu GenerationType.AUTO zu ändern, änderte nichts. Für diese spezielle Tabelle soll die Sequenznummer bei 8300 liegen.

Wo bin ich falsch gelaufen?

+0

Die ID wird nicht generiert, wenn Sie das Objekt erstellen. Es wird generiert, wenn Sie es beibehalten. –

+0

Überprüfen Sie dies für Sequenznummer Generation [Java - JPA - Generatoren - @ SequenceGenerator] (http://stackoverflow.com/questions/2595124/java-jpa-generators-sequencegenerator) –

+0

und was sagt das Protokoll? –

Antwort

0

Ich löste tatsächlich mein Problem, das passierte nicht direkt mit dem, was ich ausgesetzt war.

Diese Aufgabe Ich habe versucht, einen Teil einer relativ komplexen Aufgabe besteht darin zu bestehen, und in dem übergeordneten Objekt habe ich keine CascadeType auf die PPV-Mapping Anmerkung hinzufügen:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier") 
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0); 

Ändern diese Anmerkung an folgenden löste das Problem:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier", cascade = CascadeType.ALL) 
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);