मान लीजिए मैं निम्नलिखित इकाई जो मॉडल एक ग्राहक और एक 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 का उपयोग कर रहा हूं।
बनाएं यहां देखें: http://stackoverflow.com/questions/4400169 –
आखिरकार मैंने हाइबरनेट 4.2 और पिछले पर कुछ इंडेक्स बनाने पर छोड़ दिया। हाइबरनेट 4.3 जेपीए 2.1 का समर्थन करेगा जो 'जॉइनटेबल' के अंदर 'इंडेक्स' का समर्थन करता है। –