Предположим, у меня есть следующая сущность, которая моделирует подписчика и использует 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
Я также попытался использовать аннотацию org.hibernate.annotations.Table
для сущности Subscriber
, но, похоже, нет способа заставить его ссылаться на таблицу PERSON_ORG_SUBSCRIPTIONS
.
Я использую Hibernate 3.5.3 и PostgreSQL 9.0.