Chúng tôi có trình kích hoạt chèn trước để nhận giá trị tiếp theo từ chuỗi. Khi đối tượng được tiếp tục với phương thức save(), hibernate nhận giá trị từ chuỗi và thêm nó vào đối tượng. và khi giao dịch được cam kết từ lớp dịch vụ của Spring, giá trị ID lại tăng lên trên cơ sở dữ liệu. làm cách nào để tránh bị NEXTVAL() nếu đối tượng đã có một id ..Sự cố phát hiện với Trình kích hoạt Oracle để tạo id từ một chuỗi
Dưới đây là những gì tôi ma cố gắng làm ..
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
}
Và Lớp người dùng
@Entity
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="a1")
@SequenceGenerator(name="a1", sequenceName="usersequence")
private Long id;
/////////////////
}
Khi con trỏ đến đối tượng người dùng line1 và line2 có null trong thuộc tính id. sau line2, nó có nextval từ chuỗi - cho phép nói 1. trên line4, tôi đã thêm id = 1 vào đối tượng useraudit của người dùng .. khi giao dịch được cam kết sau dòng 5, 2 được chèn vào cột id của người dùng và 1 vào cột userId của UserAudit. Điều này không có mục đích gì đối với tôi: (Làm cách nào để tránh vấn đề này? Cảm ơn!
cảm ơn matthew .. – RKodakandla