2017-02-09 1 views
0

Ich habe zwei Spalten, die @GeneratedValues ​​verwenden, aber wenn ich sie so setze gibt es Fehler; "Exception Beschreibung: Class [Klasse Testing] hat zwei @GeneratedValues:.. Für die Felder [Testing.SEQ_NO] und [Testing.ID] Nur ein erlaubt"JPA Entity Klasse gibt Fehler mit 2 @GeneratedValue Felder

@Table(name = "TABLE1") 
@Entity 
public class Testing{ 

@GeneratedValue(strategy=GenerationType.AUTO) 
@Id 
private Long id; 

@Column(name = "LINKAGE_ID") 
private int linkageId; 

@Column(name = "TRANSFER_ID") 
private int transferId; 

@Column(name = "STATUS") 
private String status; 

@Column(name = "COMMENTS") 
private String comments; 

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ") 
@SequenceGenerator(name="SEQ",sequenceName="SEQ", allocationSize=1) 
@Column(name = "SEQ_NO") 
private int seqNo; 



**I have also created a simple sequence in Db using this:** 


CREATE SEQUENCE SEQ START WITH 1 
+0

Ich versuche, eine Möglichkeit zur automatischen Generierung von ID und SEQ_NO in derselben Entitätsklasse zu finden. –

+0

JPA-Spezifikation besagt, dass nur '@ Id'-Felder generiert werden können. Einige JPA-Anbieter (z. B. DataNucleus) ermöglichen die Generierung anderer Felder, aber um portierbar zu sein, wird nur das Feld "ID" generiert. –

Antwort

0

Wie die Fehlermeldung sagt, nur ein Feld mit @GeneratedValue ist erlaubt, aber Sie haben zwei.
Bitte entfernen Sie eine von ihnen.

Ich fürchte, Sie können nicht tun, was Sie mit einfachen Anmerkungen beabsichtigten.
Überprüfen Sie diesen vorhandenen Beitrag als Workaround.
workaround

Nicht sicher, warum Sie zwei Spalten in derselben Tabelle benötigen, deren Wert automatisch inkrementiert werden muss.
Wenn Sie wirklich zwei Unique-Spalten möchten, können Sie Ihre ID wie üblich und UUID für die andere Spalte verwenden.

+0

Hallo @minjinyu, ich muss beide automatisch generieren. –

+1

@verma_neeraj Ich fürchte, du kannst das nicht mit einfachen Annotationen im Winterschlaf machen, Bruder. Siehe Aktualisierung. –

+0

@MinjunYu ist richtig .. Sie können das hier nicht tun – Akshay

Verwandte Themen