मेरे पास टैग रखने के लिए एक MySQL तालिका है (यानी स्टैक ओवरफ़्लो पर उपयोग किए गए लोगों की तरह)। यह टैग को पकड़ने के लिए बस एक आईडी (पीके) और एक टैग कॉलम है।हाइबरनेट - अद्वितीय कॉलम बाधा को अनदेखा किया जा रहा है
मेरी टैग इकाई के लिए एनोटेटेड विधियां नीचे दिखाए गए हैं।
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
@Column(name = "tag", unique = true, nullable = false)
public String getTag() {
return this.tag;
}
मैं टैग पर एक अद्वितीय कॉलम बाधा का उपयोग कर रहा हूं क्योंकि किसी दिए गए टैग के लिए कभी भी एक से अधिक पंक्ति नहीं होनी चाहिए। हालांकि, हाइबरनेट इस बात को अनदेखा कर रहा है, यानी मैं एक ही टैग को कई बार सहेज सकता हूं और यह अपवाद फेंकने की बजाए बस एक नई पंक्ति बनाता है।
क्या मुझे कुछ याद आ रहा है या यह काम करना चाहिए?
उत्तर के लिए धन्यवाद। वैसे, यह हास्यास्पद नहीं है ?! – zakmck
नहीं, यह नहीं है। डेटाबेस मान्य है कि इकाई वास्तव में अद्वितीय है। एक ओआरएम इतना तेज़ नहीं हो सकता है। यही कारण है कि यह समझ में आता है। –
मेरा मतलब है, हास्यास्पद नहीं है कि मैं उस एनोटेशन का उपयोग करता हूं और यह डीबी में एक संवाददाता अद्वितीय बाधा नहीं बनाता है? इस तरह मैंने शुरुआत में यह समझ लिया कि यह व्यवहार करता है, हालांकि मैंने कुछ प्रयोग किए हैं और ऐसा लगता है कि यह केवल स्कीमा के लिए 'अद्वितीय = सत्य' को प्रतिबिंबित नहीं करता है जब मैं कुछ डेटाबेस का उपयोग करता हूं, जैसे एचएसक्यूएल, वही कोड एक MySQL बाधा उत्पन्न करता है मैं डीबी विन्यास स्विच। – zakmck