У нас есть триггер перед вставкой, который получает следующее значение из последовательности.Когда объект сохраняется с помощью метода save (), hibernate получает значение из последовательности и добавляет его к объекту.и когда транзакция фиксируется из сервисного уровня Spring, значение ID снова увеличивается в базе данных.как избежать получения nextval (), если объект уже имеет идентификатор ..
Вот что я пытаюсь сделать ..
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
}
И пользовательский класс
@Entity
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="a1")
@SequenceGenerator(name="a1", sequenceName="usersequence")
private Long id;
/////////////////
}
Когда курсор достигает строки1 и строки2, пользовательский объект имеет нулевое значение в атрибуте id.после строки 2 он имеет следующее значение из последовательности - скажем, 1. в строке 4 я добавил идентификатор пользователя = 1 в объект useraudit. когда транзакция фиксируется после строки 5, 2 вставляется в столбец идентификатора пользователя и 1 - в столбец userAd пользователя UserAudit.Это бесполезно для меня :( Как мне избежать этой проблемы? Спасибо!