Проблема HIbernate с триггером Oracle для генерации идентификатора из последовательности

У нас есть триггер перед вставкой, который получает следующее значение из последовательности. Когда объект сохраняется с помощью метода 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. Для меня это бесполезно :( Как мне избежать этой проблемы? Спасибо!

8
задан RKodakandla 3 November 2011 в 21:28
поделиться