# JPA ID-Generierung aushebeln



## computersport (13. Jan 2012)

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


----------



## HoaX (13. Jan 2012)

Ich wüsste nicht wie, und um ehrlich zu sein sehe ich da auch keinen Sinn drin.


----------



## computersport (13. Jan 2012)

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.


----------



## California (16. Jan 2012)

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 (16. Jan 2012)

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 (16. Jan 2012)

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.


----------

