2012-01-10 16 views
7

मैं लेख उद्धरणों के बारे में जानकारी संग्रहीत करने के लिए हाइबरनेट का उपयोग कर रहा हूं। और मैंने दो लेखों के बीच संबंध व्यक्त करने के लिए इस तरह से अपनी कक्षा को एनोटेट किया।हाइबरनेट @OneToMany और UNIQUE बाधा

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
@JoinTable(name = "CITATIONS") 
private Set<Article> citingArticles = new HashSet<Article>(); 

दुर्भाग्य से इस citingArticle पर एक अद्वितीय बाधा, जिसका मतलब है कि मैं केवल एक ही अन्य लेख का हवाला देते हैं करने के लिए एक लेख हो सकता है के साथ अनुवाद किया है।

बेशक यह वह नहीं है जो मैं चाहता हूं, मैं अद्वितीय बाधा को कैसे हटा सकता हूं?

उत्तर

7

आप अनेक-से-अनेक संबंध है, तो आप @ManyToMany साथ यह मॉडल करने के लिए की जरूरत है:

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
@JoinTable(name = "CITATIONS") 
private Set<Article> citingArticles = new HashSet<Article>(); 
+0

मैं अपने जवाब द्वारा इसके लिए बेवकूफ लग रहा है वास्तव में मुझे मदद मिली;) –

+1

क्या? नहीं .... वह * एक * चीज * कई * अन्य चीजों को संदर्भित करना चाहता है। एक जॉइन टेबल में जो एक चीज के लिए एक कॉलम होगा (जो भी वर्ग 'लेखों का सेट' है), और कई चीजों के लिए एक और * गैर-अद्वितीय * कॉलम ('आलेख')। वह बहुत से लोगों को नहीं चाहता है, वह सिर्फ एक से कई चाहता है, और इसे कई स्तंभों पर एक अद्वितीय बाधा नहीं डालना चाहिए। –

+0

@ मैटपॉवेल मुझे एक जैसी समस्या है, दूसरी इकाई में से कई को संदर्भित करने के लिए एक इकाई है, लेकिन यह अभी भी एक अनूठी बाधा डालती है, और मुझे विश्वास है कि यह एक-से-बहुत है, तो आपको समाधान क्या लगता है? – Aria

संबंधित मुद्दे