1
對不起,不清楚如何提出這個問題。這裏是我的情況:JPA:插入後如何獲取更新的實體對象?
控制器
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);
}
}
正如你所看到的,我沒有在任何地方修改實體對象引用。我更喜歡合併操作會更新持久化對象的數據已在表級初始化。在我的情況下,它只是自動生成的ID。但也可能有其他的東西,比如創建時間戳等等。是否有我需要做的事情,讓這個生成的id在持久對象上設置?操作本身沒有問題。記錄與生成的ID一起保存在表格中。
我使用Hibernate 4作爲JPA提供程序。