Aparte de los valores generados por la base de datos, obviamente Hibernate no necesita devolver la instancia actualizada porque el objeto pasó a Session.saveOrUpdate()
es la instancia actualizada. Los valores generados por la base de datos (secuencia, activación, valores predeterminados, etc.) se establecerán después Session.saveOrUpdate
si están debidamente anotados (o definidos en un archivo de mapeo XML).
Para valores de identificador
use el JPA @javax.persistence.GeneratedValue
anotación junto con JPA @javax.persistence.Id
anotación. Para propiedades simples use el Hibernate nativo @org.hibernate.annotations.Generated
anotación (afaik no hay una anotación JPA acorde).
La forma en que Hibernate recupera los valores de identificadores generados depende de la estrategia de generación y/o el dialecto de la base de datos. Para propiedades simples, Hibernate ejecuta un SELECT
adicional por declaración de identificación después de INSERT
o UPDATE
.