2013-07-06 75 views
0

我想添加索引(@Index),但我不能。當我在另一個屬性(displayName)上添加@Index時,它可以工作並在數據庫上創建這個索引,但是當我將它添加到「contacts」屬性時它不起作用。使用註釋@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關係,並未嵌入。 –