Tenemos un disparador de inserción anterior que obtiene el siguiente valor de la secuencia. Cuando el objeto persiste con el método save(), hibernate obtiene el valor de la secuencia y lo agrega al objeto. y cuando la transacción se compromete desde la capa de servicio de Spring, el valor de ID se incrementa de nuevo en la base de datos. ¿Cómo evito conseguir nextval() si el objeto ya tiene un id ..Problema de HIbernate con Oracle Trigger para generar id a partir de una secuencia
Esto es lo que ma tratando de hacer ..
UserDao
public User saveUser(User user){
session.getCurrentSession.save(user);//line2
return user;//line3
}
UserService
public void saveUserAndWriteToAudit(User user, UserAudit userAudit){
userDao.saveUser(user);//line1
userAudit.setUserId(user.getId);//line4
userAudit.saveUserAudit(userAudit);//line5
}
Y la clase de usuario
@Entity
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="a1")
@SequenceGenerator(name="a1", sequenceName="usersequence")
private Long id;
/////////////////
}
Cuando el cursor llega a la línea 1 y el objeto de usuario de la línea 2 tiene nulo en el atributo id. después de la línea2, tiene nextval de la secuencia, digamos 1. en la línea4, he agregado la identificación del usuario = 1 para usar el objeto ... cuando la transacción se confirma después de que la línea 5, 2 se inserta en la columna de identificación del usuario y 1 en la columna userId de UserAudit. Esto no sirve para nada :(¿Cómo evito este problema? ¡Gracias!
gracias matthew .. – RKodakandla