मैं अपनी इकाई पर आईडी उत्पन्न करने के लिए @GeneratedValue (strategy = GenerationType.AUTO) का उपयोग कर रहा हूं।ऑरैकल पर हाइबरनेट अनुक्रम, @ जेनरेटेड वैल्यू (रणनीति = जेनरेशन टाइप। ऑटो)
अब मैं यह कैसे काम करता हूं, लेकिन मेरे बच्चे की मेज पर, आईडी मान उत्पन्न करता है, जो मूल अनुक्रम का पालन करता है।
//parent table
@Entity
@Table (name = "parent")
public class Parent {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
@OneToMany (cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn (name = "parentId")
@ForeignKey (name = "FKparent")
private List<child> child;
}
//child table
@Entity
@Table (name = "child")
public class Child {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
}
अभिभावक पर डाले गए आईडी मान, अनुक्रम अद्यतन करते हैं। बच्चे पर डाले गए आईडी मान, अनुक्रम अद्यतन करते हैं। माता-पिता के अगले सम्मिलन पर, अनुक्रम ... बाल सम्मिलन द्वारा अपडेट किए गए मानों का उपयोग करता है ...
यह एनोटेशन दो अनुक्रम नहीं बना रहे हैं, केवल एक। क्या यह सही/अपेक्षित है?
मैं अपने डीएओ सेवा केवल entityManager.persist(parent);
नहीं करता है, तो अंत उपयोगकर्ता देखता है कि कुंजी है और यह किया जा रहा द्वारा गुमराह कर रहा है " उछल "। और मुझे यह न बताएं कि कुंजी से उपयोगकर्ता को छिपाने की जरूरत है, जो हमेशा संभव नहीं है ... – Monoman
आईड्स को समय और मोनोटोन में स्थिर रखने और अनुक्रम में छेद के बिना रखने का कोई तरीका नहीं है, जो कि मार नहीं जाता scalability। मैंने न तो 'अजीब' की उपयोगी परिभाषा देखी है और उपयोगकर्ताओं को अजीब आईडी क्यों चाहिए। –