Помимо сгенерированных базой данных значений, очевидно, нет необходимости в Hibernate для возврата обновленного экземпляра, поскольку объект, переданный Session.saveOrUpdate()
, является обновленным экземпляром. Сгенерированные базой данных значения (последовательность, триггер, значения по умолчанию и т. Д.) Будут установлены после Session.saveOrUpdate
, если они соответствующим образом аннотированы (или определены в файле отображения XML).
Для значений идентификаторов используйте аннотацию JPA @javax.persistence.GeneratedValue
вместе с аннотацией JPA @javax.persistence.Id
. Для простых свойств используйте собственную аннотацию Hibernate @org.hibernate.annotations.Generated
(afaik нет в соответствии с аннотацией JPA).
Как сгенерированные значения идентификаторов извлекаются из Hibernate, зависит от стратегии генерации и / или диалекта базы данных. Для простых свойств Hibernate выполняет дополнительный оператор SELECT
by id после INSERT
или UPDATE
.