Além dos valores gerados pelo banco de dados, obviamente não há necessidade do Hibernate retornar a instância atualizada porque o objeto foi passado para
Session.saveOrUpdate()
é a instância atualizada. Os valores gerados pelo banco de dados (sequência, gatilho, padrões, etc.) serão definidos depois Session.saveOrUpdate
se forem anotados de acordo (ou definidos em um arquivo de mapeamento XML). Para valores de identificador use o JPA
@javax.persistence.GeneratedValue
anotação em conjunto com o JPA @javax.persistence.Id
anotação. Para propriedades simples use o @org.hibernate.annotations.Generated
nativo do Hibernate anotação (afaik não há anotação JPA de acordo). Como os valores dos identificadores gerados são recuperados pelo Hibernate depende da estratégia de geração e/ou do dialeto do banco de dados. Para propriedades simples, o Hibernate executa um
SELECT
adicional pela instrução id após o INSERT
ou UPDATE
.