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

jac*_*ekn 1 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
Run Code Online (Sandbox Code Playgroud)

HostSiteServiceImpl

public void saveHostSite(HostSite hostSite) {
    hostSiteDAO.save(hostSite);
}
Run Code Online (Sandbox Code Playgroud)

HostSiteDAOImpl

public void save(HostSite hostSite) {
    if(hostSite!=null) {
        getEntityManager().merge(hostSite);
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我不是在任何地方修改实体对象引用.我觉得合并操作会使用已在表级初始化的数据更新持久化对象.在我的情况下,它只是自动生成的id.但是可能还有其他的东西,例如创建时间戳等等......是否有我需要做的事情,在持久化对象上设置这个生成的id?操作本身没有问题.记录将使用生成的id保存在表中.

我正在将Hibernate 4用于JPA提供程序.

Boz*_*zho 5

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