2012-03-31 11 views
1

Entschuldigung, nicht klar, wie Sie diese Frage stellen. Hier ist mein Szenario:JPA: Wie aktualisiert Entitätsobjekt nach dem Einfügen?

-Controller

HostSite hostSite=new HostSite(); 
hostSite.setUrl("www.somesite.com"); 
// hostSite.getId() is null, naturally 
hostSiteService.saveHostSite(hostSite); 
// hostSite.getId() is still null 

HostSiteServiceImpl

public void saveHostSite(HostSite hostSite) { 
    hostSiteDAO.save(hostSite); 
} 

HostSiteDAOImpl

public void save(HostSite hostSite) { 
    if(hostSite!=null) { 
     getEntityManager().merge(hostSite); 
    } 
} 

Wie Sie sehen, ändere ich nirgends den Objektbezug des Objekts. Ich hatte den Eindruck, dass die Zusammenführungsoperation das beibehaltene Objekt mit Daten aktualisieren würde, die auf der Tabellenebene initialisiert wurden. In meinem Fall wird nur die ID automatisch generiert. Aber es könnte andere Dinge geben, wie zB Erstellungszeitstempel, etc ... Gibt es etwas, was ich tun muss, um diese generierte ID auf das persistente Objekt setzen zu lassen? Es gibt kein Problem mit der Operation selbst. Der Datensatz wird in der Tabelle mit der generierten ID gespeichert.

Ich verwende Hibernate 4 für JPA-Anbieter.

Antwort

5

'merge() gibt die neue Instanz zurück, also geben Sie einfach jede Methode an, um Ihre Entität zurückzugeben

Verwandte Themen