Извините, не понятно, как задать этот вопрос. Вот мой сценарий:
Контроллер
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);
}
}
Как видите, я нигде не изменяю ссылку на объект сущности. У меня сложилось впечатление, что операция слияния обновит постоянный объект данными, которые были инициализированы на уровне таблицы. В моем случае это только идентификатор, который генерируется автоматически. Но могут быть и другие вещи, такие как метки времени создания и т. Д. Что мне нужно сделать, чтобы этот сгенерированный идентификатор был установлен на постоянном объекте? Нет проблем с самой операцией. Запись сохраняется в таблице с созданным идентификатором.
Я использую Hibernate 4 для провайдера JPA.