使用注释@Index hibernate

时间:2013-07-06 12:15:07

标签: java hibernate jpa map indexing

我想添加索引(@Index),但我不能。当我在另一个属性(displayName)上添加@Index时,它可以在DB上创建这个索引,但当我在“contacts”属性上添加它时,它不起作用。

@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;
}

你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为您应该使用@IndexColumn代替@Index getContacts(),因为您正在使用集合返回类型。

您还可以使用与link中指定的JPA API兼容的@OrderedColumn注释。我不知道您的Contact对象是否可嵌入,因此我建议不要使用@ElementCollection,因为它将映射到集合表。