我們有一個before插入觸發器,用於從序列中獲取下一個值。當對象用save()方法持久化時,hibernate從序列中獲取值並將其添加到對象中。當事務從Spring的服務層提交時,數據庫上的ID值再次增加。如何避免讓NEXTVAL()如果對象已經有一個id ..用於從序列中生成id的Oracle觸發器的HIbernate問題
這裏是我是個嘗試做..
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;
/////////////////
}
當光標到達line1且line2用戶對象在id屬性中爲null時。在line2之後,它具有sequence的nextval - 讓我說1在line4上,我已經添加了用戶的id = 1來使用審查對象..當事務在第5行後被提交時,2被插入到用戶的id列中並且1被插入到UserAudit的userId列中。這對我來說沒有任何意義:(如何避免這個問題?謝謝!
感謝馬修.. – RKodakandla