So speichern Sie eine Fremdschlüsseleinheit in JPA

7

Ich habe 2 Tabellen Kunden- und Kundengeschichte. customhistory hat den Fremdschlüssel customerId, der auf customerId des Kunden verweist. In der Entity, die von JPA generiert wird, habe ich ein Objekt des Kunden in der customistory Klasse, während ich nur customerId in der consumethistory Tabelle speichern möchte

Ich erhalte die richtige customerId, aber wenn ich das Attribut customerId speichern möchte, habe ich nur das Objekt des Kunden bei mir aber keine customerId in automatisch generierter Entity-Klasse von consumerhistory

%Vor%

Wie oben gezeigt, habe ich keine customerId mit mir in der Entität customerHistory. wie man es speichert?

    
curious 15.05.2013, 18:14
quelle

3 Antworten

17

Verwenden Sie die getReference Aufruf des EntityManagers, um ein Kundenobjekt mithilfe der ID zu laden und dann auf die Kundenhistorie zu setzen. In den meisten Fällen würde dieser Aufruf einen Proxy mit nur der eingebetteten ID zurückgeben, die Kundenattribute werden erst dann geladen, wenn eine andere Methode des Kunden aufgerufen wird.

%Vor%     
gkamal 15.05.2013, 18:50
quelle
2

Die Verknüpfung zwischen Ihren Tabellen wird von JPA verwaltet, Sie dürfen nicht auf customerId in customerHistory zugreifen. Sie sollten customer.getHistory () (oder wie auch immer Sie es nennen) verwenden, um die zugehörigen Verlaufseinträge zu bearbeiten. Die referenzielle Integrität wird von JPA verwaltet.

    
stacker 15.05.2013 18:22
quelle
0

Wenn Sie eclipseLink als JPA-Provider verwenden, gibt es eine Annotation, die implementiert wird, um das zugeordnete Attribut zu aktualisieren. Legen Sie es wie folgt vor der Klasse fest:

%Vor%     
E_X 09.09.2014 07:36
quelle

Tags und Links