В Oracle мы можем создать запрос на обновление, который вернет обновленную запись, используя предложение RETURNING.Создание запроса UPDATE RETURNING в Hibernate
Есть ли аналогичная функциональность в Hibernate?
В Oracle мы можем создать запрос на обновление, который вернет обновленную запись, используя предложение RETURNING.Создание запроса UPDATE RETURNING в Hibernate
Есть ли аналогичная функциональность в Hibernate?
Помимо значений, созданных в базе данных, нет необходимости в 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
.
Не является ли объект после сохранения уже обновленным? – DrColossos
Да, сохранение объекта после обновления уже обновлено. – Ishmael
Я предполагаю, что для нашего случая это скорее подход к дизайну. Эти запросы инициируются через вызовы webservice, которые затем обновляют БД. Мы решили вернуть любой обновленный или созданный объект обратно пользователю с соответствующим HTTP-статусом. В нашем коде мы выбрали отслеживание обновления вверх и вниз по веб-стеку. – hypno7oad