JPA/ Eclipselink: (Alte) Kopie einer Entity?

G

Gast2

Gast
Hallo jGemeinde,

ich frage mich wie es möglich ist eine alte Kopie einer Entity nach deren Update zu behalten, ohne manuelles kopieren der Properties. Also im Grunde wie folgt (etwas vereinfacht, aber hoffentlich verständlich):

Java:
MyEntity oldEntity = myEntityFacade.getEntity("Test Entity");
MyEntity newEntity = oldEntity;
newEntity.setName("New Name");
myEntityFacade.edit(newEntity);

Also in dem Beispiel banal ausgedrückt: Wie behalte ich den Zustand von oldEntity bei?
 

MySelV

Aktives Mitglied
Hi,

was bezweckst du denn? Soll die alte Kopie weiterhin in der Datenbank stehen und die neue "kopierte" Entity zusätzlich gespeichert werden?
Ich glaube in dem Fall reicht es nicht mal den PrimaryKey auf null zu setzen, sondern es muss tatsächlich ein neues Objekt angelegt werden.

Grüße
 
G

Gast2

Gast
Ich glaube in dem Fall reicht es nicht mal den PrimaryKey auf null zu setzen, sondern es muss tatsächlich ein neues Objekt angelegt werden.

Ja, genau das hatte ich auch schon versucht, dann failed auch das update, weil das NULL-Setzen wohl direkten Einfluss auch auf die Original-Entity hat.

was bezweckst du denn? Soll die alte Kopie weiterhin in der Datenbank stehen und die neue "kopierte" Entity zusätzlich gespeichert werden?

Im Grunde geht es um ein History-Tracking. Die alten Daten sollen nur zum nachträglichen Vergleich dienen und dann aufbereitet in eine andere Tabelle (History Table) geschrieben werden.
 

MySelV

Aktives Mitglied
Hi,

dann empfehle ich mal eine eigenes Objekt für die History (Liste von Historyeinträgen) oder, wenn es tatsächlich das gleiche Objekt ist - kannst du auch einfach eine Liste des eigenen Objekts einfügen (Rekursion)

Java:
public class MyEntity {

    private List<MyEntity> historyItems;

}

Bedeutet aber auch, dass du deine alte Entity clonen musst, da seh ich keine andere Möglichkeit.

@User: Es berichtige mich jemand, wenn ich falsch liege.

Grüße
 
G

Gast2

Gast
Danke erstmal fürs Feedback, aber vielleicht reden wir leicht aneinander vorbei. Für die History existiert ebenfalls eine Entity/ Tabelle. Allerdings ist das Beschaffen dieser Daten genau das Problem:

Bedeutet aber auch, dass du deine alte Entity clonen musst, da seh ich keine andere Möglichkeit.

Wie clone ich eine Entity, um nach dem Update für Vergleichszwecke vor und nachher zu haben?
 
G

Gast2

Gast
Hibernate bietet Entity-Historisierung von Haus aus, siehe hier.

Es gibt auch von Eclipselink einen Ansatz, ein nahezu gespiegeltes Table für History Tracking zu benutzen (siehe hier), allerdings hat das eher einen Trigger-Charakter auf Tabellenebene und man benötigt ja oft neben der Information was wann geändert wurde, noch durch wen.
 

Ähnliche Java Themen

Neue Themen


Oben