我想添加索引(@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;
}
你有什么建议吗?
答案 0 :(得分:0)
我认为您应该使用@IndexColumn
代替@Index
getContacts()
,因为您正在使用集合返回类型。
您还可以使用与link中指定的JPA API兼容的@OrderedColumn
注释。我不知道您的Contact
对象是否可嵌入,因此我建议不要使用@ElementCollection
,因为它将映射到集合表。