Освен стойностите, генерирани от базата данни, очевидно няма нужда Hibernate да връща актуализирания екземпляр, тъй като обектът е предаден на Session.saveOrUpdate()
е актуализираният екземпляр. Стойностите, генерирани от базата данни (последователност, тригер, настройки по подразбиране и т.н.), ще бъдат зададени след Session.saveOrUpdate
ако са съответно анотирани (или дефинирани във файл за съпоставяне на XML).
За стойности на идентификатор
използвайте JPA @javax.persistence.GeneratedValue
анотация във връзка с JPA @javax.persistence.Id
анотация. За прости свойства използвайте родния Hibernate @org.hibernate.annotations.Generated
анотация (афаик няма анотация според JPA).
Как генерираните стойности на идентификатора се извличат от Hibernate зависи от стратегията за генериране и/или диалекта на базата данни. За прости свойства Hibernate изпълнява допълнителен SELECT
чрез израз за идентификатор след INSERT
или UPDATE
.