JPA ID-Generierung über Sequenzen

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hallo zusammen,

bis jetzt haben wir unsere IDs automatisiert von der DB über

Java:
	@GeneratedValue(strategy = GenerationType.AUTO)

generiert. Leider wird das von unserem neuen SAP NetWeaver Application Server nicht unterstützt (wie so vieles). Deshalb haben wir jetzt die Generierung auf eine Sequenz-Tabelle umgestellt.

Java:
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "gen.xyz")
	@TableGenerator(
			name = "gen.xyz", pkColumnName = "SEQUENCE_NAME",
			valueColumnName = "SEQUENCE_NEXT_HI_VALUE",
			pkColumnValue="xyz", table = "HIBERNATE_SEQUENCES"
	)

Kann ich Hibernate irgendwie sagen, dass er diese Sequenztabelle mit der letzten ID aus der jeweiligen "wirklichen" Tabelle initialisieren soll? Sonst dürfte ich jetzt bei ca. 200 Tabellen die höchste ID raussuchen und in die Sequenz-Tabelle schreiben.

Danke und Gruß
 

The_S

Top Contributor
Könnte man, aber ich brauchs ziemlich zügig. Problem ist auch, dass die Datensätze in der Tabelle wie die VOs und nicht wie die Tabelle in der DB heißen. Von daher müsste man das bei ner Automatisierung auch erst einmal "anders mappen".
 

Noctarius

Top Contributor
Hast du mal auf einer zweiten Tabelle (Backup) probiert ob Hibernate nicht automatisch bei der höchsten ID weitermacht? Immerhin wäre das recht sinnvoll :D
 

The_S

Top Contributor
Nee, wenn ich was speichern will, bekomm ich ne ConstraintViolationException. Problem ist, dass ich jetzt eigentlich mit was anderem weitermachen/deployen muss, das aber nicht kann, solang das Problem nicht gefixt ist, und der Kollege, der das vorhin eilig ins Repository ohne Test verschoben hat, gerade nicht da ist :p
 

The_S

Top Contributor
Besagter Kollege ist aus der Mittagspause wieder gekommen und hats selbst ausgebadet ;) . Thema bleibt mal offen, vielleicht findet ja jemand ne Lösung, wie das allgemein funktioniert. Der Kollege hat ein Programm geschrieben, das über Reflection die Tabellennamen und Entitynamen ausliest/vergleicht und die Sequenz abgleicht.
 
Zuletzt bearbeitet:

Noctarius

Top Contributor
Hehe er soll den Code mal ans Hibernate Project committen, vielleicht fühlt sich jemand auserwählt es zu vervollständigen und als festen Bestandteil einzubauen :D
 

The_S

Top Contributor
Ist leider nicht vollständig dynamisch, sondern benötigt noch eine Properties-Datei. Mehr war auf die Schnelle leider nicht drin.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben