मेरे पास एक प्रोजेक्ट भी था जहां एक ओरेकल डीबी जो मेरी @Entity कक्षाओं को डेटा प्रदान करता है। जैसा कि आपने कहा, एक अनुक्रम एक ट्रिगर के माध्यम से तालिका के पीके के लिए आईडी उत्पन्न करता है। यह वह एनोटेशन था जिसका मैंने इनमें से किसी एक वर्ग में उपयोग किया था:
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
@SequenceGenerator(name = "G1", sequenceName = "LOG_SEQ")
@Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
public int getId() {
return this.id;
}
यह दूसरा सिंटैक्स है जिसे आपने अपनी पोस्ट में दिखाया है। जावा कोड में ट्रिगर को कोई कॉल नहीं है क्योंकि ट्रिगर को डीबी द्वारा प्रबंधित किया जाता है। मुझे याद है कि अगर मैं समस्या नहीं चाहता था तो मुझे डीबी में एक ही समय में अनुक्रम और ट्रिगर होना था। ट्रिगर ने पूछा कि क्या सम्मिलित करने के लिए पंक्ति की आईडी शून्य है या =0. इस मामले में अनुक्रम LOG_SEQ कहा जाता है।
इसलिए यदि आप अपनी इकाई के @Id को कोई मान प्रदान करते हैं तो इसे डीबी में डाला जा सकता है (यदि वह आईडी मौजूद नहीं है) और अनुक्रम नहीं कहा जाएगा। वास्तव में यह क्या होता है यह देखने के लिए ट्रिगर का कोड देखने का प्रयास करें।