2013-02-06 27 views
6

मैं निम्नलिखित (सरलीकृत) स्थिति है:org.hibernate.MappingException: संग्रह के लिए मानचित्रण में बार-बार स्तंभ का उपयोग @JoinTable

तालिका एक के लिए फील्ड:

  • आईडी
  • COMMONID

तालिका के लिए फ़ील्ड एबी:

  • चिकित्सा
  • बोली COMMONID

टेबल बी के लिए फील्ड:

  • आईडी
  • COMMONID

और इस तरह एक OneToMany का उपयोग कर संस्थाओं के साथ यह मैप करना चाहते हैं (तालिका ए पर मैप किए गए मास्टर क्लास में ए):

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = false, fetch = FetchType.LAZY) 
@JoinTable(name = "AB", 
joinColumns= { 
    @JoinColumn(name = "AID", referencedColumnName="ID"), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID")}, 
inverseJoinColumns = { 
    @JoinColumn(name = "BID", referencedColumnName="ID"), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID")}) 
private Set<MyClassForB> list= new HashSet<MyClassForB>(); 

सत्र का निर्माण, मैं निम्न त्रुटि प्राप्त:

org.hibernate.MappingException: Repeated column in mapping for collection using @JoinTable list column: COMMONID 

क्या मैं गलत कर रहा हूँ? ध्यान दें कि मैं हाइबरनेट के लिए नया हूं। insertable जोड़ने

+0

स्पष्ट रूप से आप किसी अन्य अलग मैपिंग में 'COMMONID' का उपयोग कर रहे हैं। –

उत्तर

0

कोशिश करने के लिए है, और इस

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = false, fetch = FetchType.LAZY) 
@JoinTable(name = "AB", 
joinColumns= { 
    @JoinColumn(name = "AID", referencedColumnName="ID", insertable = false, updatable = false), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID", insertable = false, updatable = false)}, 
inverseJoinColumns = { 
    @JoinColumn(name = "BID", referencedColumnName="ID", insertable = false, updatable = false), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID", insertable = false, updatable = false)}) 
private Set<MyClassForB> list= new HashSet<MyClassForB>(); 

तरह से अपडेट किए लेकिन मुझे यकीन है कि आप इस समूह को अपडेट करने में सक्षम हो जाएगा कि क्या नहीं कर रहा हूँ, मेरे उपयोग के मामले केवल पढ़ने के लिए गया था।