varsayalım ben şöyle aboneliklerin listesini modellemek için bir CollectionTable
kullanan modeller bir abone ve aşağıdaki varlık var:Hibernate
@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;
}
Yani bu bir tablo ile oluşturur PERSON_ID
, ORG_ID
ve SUBSCRIPTION_NAME
için sütunlar.
SUBSCRIPTION_NAME
sütununda bir veritabanı dizini oluşturmaya çalışıyorum. Ben _subscriptionNames
aşağıdaki ek açıklamayı koyarsanız Ama:
@org.hibernate.annotations.Index(name="subscription_idx", columnNames={"SUBSCRIPTION_NAMES"})
istisna almak:
org.hibernate.MappingException: Unable to find logical column name from physical name null in table SUBSCRIBER
Ben de Subscriber
varlık üzerinde org.hibernate.annotations.Table
ek açıklama kullanarak çalıştı, ancak bir yol olarak görünmüyor PERSON_ORG_SUBSCRIPTIONS
tablosuna başvurmak için.
Hibernate 3.5.3 ve PostgreSQL 9.0 kullanıyorum.
oluştur Burada bir göz atın: http://stackoverflow.com/questions/4400169 –
Sonunda, Hibernate 4.2 ve önceki bazı dizinler yapmaktan vazgeçtim. Hazırda Bekletme 4.3, 'JoinTable' içinde 'indeksleri' destekleyen JPA 2.1'i destekleyecektir. –