2010-12-10 13 views
5
का उपयोग कर एक CollectionTable का एक स्तंभ पर एक सूचकांक बनाएं

मान लीजिए मैं निम्नलिखित इकाई जो मॉडल एक ग्राहक और एक CollectionTable उपयोग करता है ताकि तरह सदस्यता की एक सूची मॉडल करने के लिए है:हाइबरनेट

@Entity 
@Table(name = "SUBSCRIBER") 
public class Subscriber { 
    @ElementCollection 
    @CollectionTable(name = "PERSON_ORG_SUBSCRIPTIONS", 
        joinColumns = { @JoinColumn(name = "PERSON_ID", referencedColumnName = "PERSON_ID"), 
            @JoinColumn(name = "ORG_ID", referencedColumnName = "ORG_ID") }) 
    @Column(name = "SUBSCRIPTION_NAME") 
    protected Set<String> _subscriptionNames; 
} 

तो इस के साथ एक मेज बनाता है PERSON_ID, ORG_ID और SUBSCRIPTION_NAME के लिए कॉलम।

मैं SUBSCRIPTION_NAME कॉलम पर डेटाबेस इंडेक्स बनाने की कोशिश कर रहा हूं। लेकिन अगर मैं _subscriptionNames पर निम्नलिखित एनोटेशन डाल:

@org.hibernate.annotations.Index(name="subscription_idx", columnNames={"SUBSCRIPTION_NAMES"}) 

मैं एक अपवाद प्राप्त करें:

org.hibernate.MappingException: Unable to find logical column name from physical name null in table SUBSCRIBER 

मैं भी Subscriber इकाई पर org.hibernate.annotations.Table एनोटेशन उपयोग करने की कोशिश, लेकिन वहाँ एक तरीका हो प्रतीत नहीं होता है इसे PERSON_ORG_SUBSCRIPTIONS तालिका का संदर्भ देने के लिए।

मैं हाइबरनेट 3.5.3 और पोस्टग्रेएसक्यूएल 9.0 का उपयोग कर रहा हूं।

+0

बनाएं यहां देखें: http://stackoverflow.com/questions/4400169 –

+0

आखिरकार मैंने हाइबरनेट 4.2 और पिछले पर कुछ इंडेक्स बनाने पर छोड़ दिया। हाइबरनेट 4.3 जेपीए 2.1 का समर्थन करेगा जो 'जॉइनटेबल' के अंदर 'इंडेक्स' का समर्थन करता है। –

उत्तर

0

क्या तालिका SUBSCRIBER में मौजूद "SUBSCRIPTION_NAME" नाम वाला कॉलम है?

क्या आप कोड से तालिका पर अनुक्रमणिका बनाने की योजना बना रहे हैं? आपको उचित रूप से hibernate.hbm2ddl.auto =