2013-07-06 2 views
0

Я бы хотел добавить index (@Index), но я не могу. Когда я добавляю @Index в другое свойство (displayName), он работает и создает этот индекс в БД, но когда я добавляю его в свойство «Контакты», он не работает.Использовать аннотацию @Index hibernate

@Entity 
@Table(name = "TBL_PARTY") 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "PARTY_TYPE", 
discriminatorType = DiscriminatorType.STRING) 
@SequenceGenerator(name = "idGenerator", sequenceName = "SEQ_PARTY", 
    allocationSize = 1) 
public abstract class Party extends BaseEntity { 
..... 
@OneToMany(fetch = FetchType.LAZY) 
@JoinColumn(name = "PARTY_ID", nullable = false,unique = true) 
@Cascade(value = {CascadeType.SAVE_UPDATE, CascadeType.DELETE}) 
**@Index(name = "IDX_CONTACTS")** 
public List<Contact> getContacts() { 
    return contacts; 
} 
**@Index(name="IDX_NAME)** 
@Column(name = "DISPLAY_NAME") 
public String getDisplayName() { 
    return displayName; 
} 

У вас есть предложения?

ответ

0

Я думаю, вы должны использовать @IndexColumn вместо @Index для getContacts(), поскольку вы используете тип возврата коллекции.

Вы также можете использовать аннотацию @OrderedColumn, которая совместима с JPA API, как указано здесь link. Я не знаю, встраивается ли ваш объект Contact, поэтому я бы посоветовал использовать @ElementCollection, поскольку он будет отображаться в таблицу коллекции.

+0

@IndexColumn также не работает, любое предложение? –

+0

Я обновил свой ответ, надеюсь, он поможет –

+0

@OrderedColumn не работает для меня. Контакты - это просто отношение OneToMany, и оно не внедрено. –

Смежные вопросы