JPA: Как получить обновленный объект сущности после вставки? - PullRequest
1 голос
/ 01 апреля 2012

Извините, не понятно, как задать этот вопрос. Вот мой сценарий:

Контроллер

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.

1 Ответ

5 голосов
/ 01 апреля 2012

'merge () возвращает новый экземпляр, поэтому просто заставьте каждый метод возвращать вашу сущность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...