असल
, यहाँ SOMETHING_SEQ
से लिया तुम कहीं कॉन्फ़िगर किया गया अनुक्रम का नाम है अपने हाइबरनेट कॉन्फ़िगरेशन में। और hibernate_sequence
डेटाबेस में अनुक्रम नाम है। विन्यास में यह नीचे की तरह कुछ देख रहा होगा,
<sequence-generator name="SOMETHING_SEQ"
sequence-name="hibernate_sequence"
allocation-size="<any_number_value>"/>
आप पूरी तरह बजाय एनोटेशन का उपयोग करके इस विन्यास छोड़ सकते हैं। फिर आपके @SequenceGenerator
एनोटेशन को कुछ और पैरामीटर प्रदान करने की आवश्यकता होगी। नीचे उदाहरण है।
@SequenceGenerator(name="SOMETHING_SEQ", sequenceName="hibernate_sequence", allocationSize=10)
उदाहरण एकाधिक इकाई वर्गों नीचे की तरह कुछ करना होगा के लिए,
@Entity
public class Entity1 {
@Id
@SequenceGenerator(name = "entity1Seq", sequenceName="ENTITY1_SEQ", allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity1Seq")
@Column(name = "ID", nullable = false)
private Long id;
...
...
}
@Entity
public class Entity2 {
@Id
@SequenceGenerator(name = "entity2Seq", sequenceName="ENTITY2_SEQ", allocationSize=10)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity2Seq")
@Column(name = "ID", nullable = false)
private Long id;
...
...
}
स्रोत
2010-03-05 04:17:32
धन्यवाद। लेकिन मेरे मामले में, हाइबरनेट कैसे मेरी आईडी प्रदान करता है? जब मैं अपनी लम्बी आईडी के लिए अपनी इकाई को शून्य मान के साथ सहेजता हूं, तो यह जादुई रूप से ऑटो डाला जाता है। क्या यह कुछ विशेष तालिका के माध्यम से है, या उस hibernate_sequence का उपयोग कर रहा है? या ..? – JavaRocky
'हाइबरनेट-सीक्यू' का उपयोग करके, और निश्चित रूप से जब आपने इसे उत्पन्न करने के लिए हाइबरनेट कहा था, तो आपको स्वयं को कोई भी प्रदान नहीं करना चाहिए। या यहां तक कि यदि आप प्रति मूल्य कुछ मूल्य प्रदान करते हैं, तो वह मान ओवरराइट हो जाएगा। –
क्या आप कह रहे हैं कि कई इकाइयां समान हाइबरनेट अनुक्रम साझा करती हैं? – JavaRocky