2012-04-11 17 views
5

हाय मैं इसउत्पन्न करने के लिए कैसे ऑटो के साथ एक हाइबरनेट आईडी एक शुरू करने मूल्य

@Id 
@Column(nullable=false) 
@GeneratedValue(strategy=GenerationType.AUTO) 
public int getUserID() { 
    return UserID; 
} 

लेकिन मैं मैन्युअल रूप से "e.setUserID तरह डीएओ से स्थापित (01) की तरह कोड लिखा है के साथ उत्पन्न; " डालने के लिए। अन्यथा पंक्ति डालने नहीं है क्या आईडी पर मूल्य प्राप्त करने के लिए कोई प्रक्रिया है और स्वचालित रूप से जेनरेट किया गया मूल्य पुनर्प्राप्त करें। इम सोच मैं कुछ मदद

उत्तर

4

उपयोग

@GenericGenerator(name="generator", strategy="increment") 
@GeneratedValue(generator="generator") 
+0

यह काम करता है, लेकिन यह किसी अन्य कॉलम को जेनरेट किए गए मान – Vidya

+0

को असाइन कर रहा है यदि कोई भी मतदान कर रहा है, तो एक कारण होना चाहिए जिसे साझा किया जाना चाहिए, क्यों मतदान किया गया? – Shehzad

+0

यह एक सुरक्षित तरीका नहीं है क्योंकि जनरेटर डीबी से अधिकतम आईडी का चयन करता है और इसे बढ़ाता है। हालांकि यह परीक्षण उद्देश्यों के लिए उपयोगी है। दस्तावेज़ स्पष्ट रूप से चेतावनी देते हैं 'क्लस्टर में उपयोग न करें!'। इसे देखें: https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/id/IncrementGenerator.html https://docs.jboss.org/hibernate/orm/3.3/reference/en /html/mapping.html#mapping-declaration-id –

5

उपयोग ऑटो के बजाय पहचान पीढ़ी प्रकार मिल जाएगा। आईडी के लिए एक लंबा उपयोग करें। मैं उपयोगकर्ता नाम से उपयोगकर्ता आईडी से नाम बदलने की भी अनुशंसा करता हूं। कक्षा के नाम के लिए @Entity को मत भूलना।

@Entity 
public class MyClass{ 

private Long userId; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column 
    public Long getUserID(){ 
     return userId; 
    } 

    //.. rest of class 

} 

नामकरण सम्मेलनों के साथ बहुत सावधान रहें और सुनिश्चित करें कि आपके फ़ील्ड नाम और प्रकार डेटाबेस से फ़ील्ड नाम और प्रकार से मेल कर सकते हैं।

+0

यह पंक्ति बनाते समय स्वचालित रूप से आईडी मान बनाएगा ... या हमें सेटर को कॉल करना चाहिए विधियों – Vidya

+0

में आपको ** आईडी को मैन्युअल रूप से सेट नहीं करना चाहिए यदि डेटाबेस में आईडी पहचान के रूप में दिखाई दे। सबसे पहले सुनिश्चित करें कि आपका डेटाबेस कॉन्फ़िगरेशन इस तरह से है कि यह आईडी को स्वतः बढ़ाता है। फिर ऊपर बताए गए आईडी कॉलम को मैप करें। फिर, डेटा के सम्मेलनों और प्रकारों का नामकरण करने पर सावधान रहें। –