抱歉,不清楚如何提出这个问题。这是我的情景:
控制器
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提供程序。
答案 0 :(得分:5)
' merge()返回新实例,所以只需让每个方法都返回你的实体