【问题标题】:Use annotation @Index hibernate使用注解 @Index 休眠
【发布时间】:2013-07-04 09:10:09
【问题描述】:

我想添加 index(@Index) 但我不能。当我在另一个属性(displayName)上添加@Index 时,它可以工作并在数据库上创建此索引,但是当我将它添加到“联系人”属性时它不起作用。

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

你有什么建议吗?

【问题讨论】:

    标签: java hibernate jpa map indexing


    【解决方案1】:

    我认为您应该使用@IndexColumn 而不是@Index 来代替getContacts(),因为您使用的是集合返回类型。

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

    【讨论】:

    • @OrderedColumn 对我不起作用。联系人只是一个 OneToMany 关系,它没有嵌入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多