से आईडी उत्पन्न करने के लिए ओरेकल ट्रिगर के साथ हाइबरनेट समस्या हमारे पास पहले से सम्मिलित ट्रिगर है जो अनुक्रम से अगला मान प्राप्त करता है। जब ऑब्जेक्ट को सेव() विधि के साथ रखा जाता है, तो हाइबरनेट अनुक्रम से मान प्राप्त करता है और इसे ऑब्जेक्ट में जोड़ता है। और जब लेन-देन स्प्रिंग की सेवा परत से किया जाता है, तो आईडी मान को डेटाबेस पर फिर से बढ़ाया जाता है। कैसे .. मैं 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 उपयोगकर्ता ऑब्जेक्ट आईडी विशेषता में शून्य है। लाइन 2 के बाद, यह अनुक्रम से अगला है - कहें 1. लाइन 4 पर, मैंने उपयोगकर्ता की आईडी = 1 को उपयोगकर्ता को ऑब्जेक्ट करने के लिए जोड़ा है .. जब लेन-देन लाइन 5 के बाद किया जाता है, 2 उपयोगकर्ता के आईडी कॉलम में और 1 उपयोगकर्ता उपयोगकर्ता के उपयोगकर्ता आईडी कॉलम में डाला जाता है। यह मेरे लिए :(कोई उद्देश्य में कार्य करता है कि मैं इस मुद्दे से कैसे बच सकता हूँ? धन्यवाद!
धन्यवाद मैथ्यू .. – RKodakandla