JPA ID-Generierung aushebeln

computersport

Aktives Mitglied
Moin,

ich kopiere zurzeit Entity's aus einer Datenbank in eine andere.
Dabei gehe ich so vor das ich mir mit einer PersistenceUnit(P1) die Daten aus der
Datenbank hole und diese mit einer zweiten PersistenceUnit(P2) in die
andere DB speicher/kopiere.
Das funktioniert auch ganz gut, nur verändert P2 die ID beim Abspeichern in
der anderen DB.

Beide PersistenceUnits's verwenden die selben Entity-Klassen und diese haben
bei dem ID-Attribut natürlich die Annotation @GeneratedValue. Ist es möglich das generieren der ID
zu unterbinden wenn ich ein Objekt mit P2 in der zweiten Datenbank speichern will?

Compi
 

computersport

Aktives Mitglied
Ich will die Daten in die neue Datenbank verschieben ohne das die ID angepasst wird... die soll völlig identisch sein wie in der ersten Datenbank... führe ich jedoch einen merge oder einen persist aus, verändert sich die ID.

Da ich sehr viele klassen habe will ich ungern jede Klasse neu definieren ohne... @GeneratedValue und habe nach einem anderen weg gesucht.
 
Zuletzt bearbeitet:

California

Aktives Mitglied
Welche Datenbank?
Alt == Neu oder Alt != Neu?
Kannst Du das Migrationswerkzeug der Datenbank verwenden?
Das geht z.B. bei MSSQL super...
Du kannst ein Autogenerated- Feld nur an einer leeren Tabelle ändern, d.h. wenn Du irgendwie die Daten ohne Autogenerate importierst, kannst Du es nachher nicht mehr einschalten. (Zumindest bei den Datenbanken, die ich kenne.)
Ich nehme aber an, dass deine Businesslogik darauf basiert, dass die Tabellen Autogenerated IDs haben...

(Und lass bitte die dämlichen Apostrophe bei Mehrzahlen weg, kriegt man ja Augenkrebs von...)
 

California

Aktives Mitglied
Manche Datenbanken können die Generierung zeitweise aussetzen. Sieht dann etwa so aus wie:
ALTER TABLE sowieso SET AUTO_GENERATE OFF
Musst Du aber in der Doku Deiner Db nachschauen.
Und nach dem Import nicht vergessen, es schön brav wieder einzuschalten...
 

computersport

Aktives Mitglied
Ich habe das Problem heute lösen können.

Ich habe die entsprechenden Attribute über die orm.xml einfach überschrieben.

So brauchte ich keine Anpassungen in den einzelnen Entitäten machen.
 

Neue Themen


Oben