2012-03-12 2 views
0

В Oracle мы можем создать запрос на обновление, который вернет обновленную запись, используя предложение RETURNING.Создание запроса UPDATE RETURNING в Hibernate

Есть ли аналогичная функциональность в Hibernate?

+0

Не является ли объект после сохранения уже обновленным? – DrColossos

+0

Да, сохранение объекта после обновления уже обновлено. – Ishmael

+0

Я предполагаю, что для нашего случая это скорее подход к дизайну. Эти запросы инициируются через вызовы webservice, которые затем обновляют БД. Мы решили вернуть любой обновленный или созданный объект обратно пользователю с соответствующим HTTP-статусом. В нашем коде мы выбрали отслеживание обновления вверх и вниз по веб-стеку. – hypno7oad

ответ

0

Помимо значений, созданных в базе данных, нет необходимости в Hibernate возвращать обновленный экземпляр, поскольку объект, переданный в Session.saveOrUpdate(), является обновленным экземпляром. Значения в базе данных (последовательность, триггер, значения по умолчанию и т. Д.) Будут установлены послеSession.saveOrUpdate, если они соответственно аннотируются (или определяются в файле сопоставления XML).

Для комментариев identifier values используйте примечание JPA в сочетании с аннотацией JPA @javax.persistence.Id. Для simple properties используйте встроенную аннотацию Hibernate @org.hibernate.annotations.Generated (afaik не существует аннотации JPA).

Как генерируемые значения идентификатора извлекаются Hibernate, зависит от стратегии генерации и/или диалоги базы данных. Для простых свойств Hibernate выполняет дополнительный SELECT по заявлению id после INSERT или UPDATE.