У нас есть триггер перед вставкой, который получает следующее значение из последовательности. Когда объект сохраняется с помощью метода 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 имеет значение null в атрибуте id. после строки 2 он имеет следующее значение из последовательности - скажем, 1. в строке 4 я добавил идентификатор пользователя = 1 к объекту useraudit .. когда транзакция фиксируется после строки 5, 2 вставляется в столбец идентификатора пользователя и 1 в столбец UserId UserAudit. Для меня это бесполезно :( Как мне избежать этой проблемы? Спасибо!