JPA:如何在插入后获取更新的实体对象?

时间:2012-03-31 22:03:08

标签: jpa hibernate-4.x

抱歉,不清楚如何提出这个问题。这是我的情景:

控制器

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提供程序。

1 个答案:

答案 0 :(得分:5)

' merge()返回新实例,所以只需让每个方法都返回你的实体