2010-11-08 14 views
104

मैं एक संपत्ति के रूप में@Column (रों) एक @ManyToOne संपत्ति

@ManyToOne 
@Column(name="LicenseeFK") 
private Licensee licensee; 

सेट के साथ एक जेपीए इकाई है लेकिन जब मैं JBoss 6 पर तैनात आवेदन यह कहते हुए एक त्रुटि फेंकता पर अनुमति नहीं:

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property 

मैं जेबए 2.0 कार्यान्वयन के रूप में हाइबरनेट 3.5 का उपयोग करता हूं।

विदेशी कुंजी कॉलम को संदर्भित करने के लिए मुझे क्या उपयोग करना चाहिए?

उत्तर

205

उपयोग @Column के बजाय @JoinColumn:

@ManyToOne 
@JoinColumn(name="LicenseeFK") 
private Licensee licensee; 
+9

लेकिन क्यों? उस के लिए कोई स्पष्टीकरण? –

+3

@ ओन्ड्रेजोकार शायद क्योंकि आप इस पर '@ ManyToOne' का उपयोग करते हैं, और दूसरी तरफ (मैप)" 'mappedby 'का अर्थ है, जिसका अर्थ है कि यह कॉलम (" लाइसेंसधारी एफके "नामक एक विदेशी कुंजी है, और इसलिए एक जुड़ा हुआ है स्तंभ। तो, यह नाम "लाइसेंसधारी एफके" नाम के साथ एक जुड़ा हुआ कॉलम है। मुझे उम्मीद है कि अब यह स्पष्ट है। – Casper

4

@JoinColumn और @Column एक साथ उपयोग करना ही गलती का परिणाम देगा। इसे केवल उपयोग करने के लिए बदलें: @JoinColumn इसे ठीक करने के लिए।

+8

आपका उत्तर काफी भ्रमित है। आप \ @ManyToOne बिंदु के साथ \ @ कॉलम का उपयोग नहीं कर सकते। – Abbadon

+0

@Abbadon मैंने इसे स्पष्ट करने के लिए उत्तर संपादित किया है। –

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