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.