# JPA: Zweite Instanz eines Entitätsobjekts



## Angel4585 (24. Feb 2008)

Hallo,

ich habe gerade folgendes Problem:

Ich habe eine Client/Server-JPA-Anwendung. Der Server verwaltet die Datenbank, der Client fordert Daten an.

Jetzt habe ich aber das Problem, dass ich am Client bereits ein Objekt mit der ID 1 habe, mir vom Server jetzt "die aktuelle Version" dieses Objekts vom Server holen möchte, was dazu führt, das ich am Client immernoch das alte habe, da JPA es sceinbar nicht erlaubt das zwei Instanzen eines Entitätsobjekts existieren.
Liege ich mit meiner Vermutung richtig? Wie kann ich das Problem beheben?

Danke schonmal

Martin


----------



## Guest (24. Feb 2008)

Client und Server doch nicht in gleicher VM? Spätestens, wenn die Entities durch die Leitung gehen, sind sie detached.


----------



## Angel4585 (25. Feb 2008)

Wann sind die denn in der gleichen VM?
Wenn Sie auf dem selben PC ausgeführt werden, oder wenn ich sie beide zB aus NetBeans raus starte?

Ich habe beides getestet, also auch getrennt nacheinander auf einem PC gestartet, hilft jedoch nichts.

Ich werde es jetzt anders versuchen, indem ich ein Interface für die jeweiligen Objekte anlege und am Client nur dieses Interface auslese. Das sollte funktionieren. *Methode Holzhammer anwend*


----------



## Guest (25. Feb 2008)

Angel4585 hat gesagt.:
			
		

> Wann sind die denn in der gleichen VM?
> Wenn Sie auf dem selben PC ausgeführt werden, oder wenn ich sie beide zB aus NetBeans raus starte?


Nein, damit meinte ich z.B. ein Web-Interface auf gleichem Application Server oder ähnliches Szenario.



			
				Angel4585 hat gesagt.:
			
		

> Ich habe beides getestet, also auch getrennt nacheinander auf einem PC gestartet, hilft jedoch nichts.
> 
> Ich werde es jetzt anders versuchen, indem ich ein Interface für die jeweiligen Objekte anlege und am Client nur dieses Interface auslese. Das sollte funktionieren. *Methode Holzhammer anwend*


I.d.R. synchronisiert man (clientseitig) nach dem Speichern, indem man einen entsprechenden Event in die Runde schickt.
Das Model (der Teil, der hier für das Speichern zuständig ist) würde einen Event schicken, der alle interessierten 
(Listener/Observer) Contoller darüber informiert, dass sich die Daten geändert haben. Diese leiten den Event an 
Views weiter, die sich dann aktualisieren.

Du kannst auch dafür sorgen, dass nie zwei Instanzen mit gleicher Id gleichzeitig existieren (Stichwort: Serializable#readResolve).
Das kann aber schnell ein Eigenleben entwickeln.


----------

