Ich verwende Hibernate mit einer MySQL-Datenbank in meinem Frühjahr MVC-Projekt. Ich habe die @GeneratedValue
Annotation verwendet, um Auto-Inkremenet für meine ID-Felder festzulegen. So sind alle meine Einheiten haben dieses Stück Code und alles funktioniert wie erwartet:Hibernate - Wie setze ich automatische Inkrementierung in mysql und Oracle Datenbanken?
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
Zu diesem Zeitpunkt möchte ich zu einer Oracle-Datenbank wechseln. Nun habe ich zwei Fragen hier:
1. Was ist die beste Lösung, um Auto-Inkrement-Feld in Oracle einzustellen? Ich habe diesen Code, aber nicht funktioniert:
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_Sequence")
@SequenceGenerator(name="id_Sequence", allocationSize=1)
2 (Weitere wichtige Frage). Gibt es eine Möglichkeit, eine eindeutige Annotation zu verwenden, um automatisches Inkrement festzulegen, das sowohl für MySQL als auch für Oracle funktioniert?
Dank für Ihre Antwort danken. Sie müssen "strategy = GenerationType.SEQUENCE" nicht in Ihrem ersten Vorschlag verwenden? – hamed
Ich denke nicht, weil Sie Ihren Generator als '@ SequenceGenerator' definiert haben. –
Ich habe '@ SequenceGenerator (Name = "Some_gen", SequenceName = "Emp_Seq") @GeneratedValue (Generator = "Some_gen") 'über meine ID, aber nicht funktioniert. Auch '@GeneratedValue (strategie = GenerationType.TABLE)' funktioniert nicht. – hamed