如何在MappedSuperclass上注释索引

时间:2011-09-27 08:33:58

标签: hibernate indexing annotations

我有一个映射的超类,它有两个已编入索引的属性。现在我想在两个属性上创建一个组索引。到目前为止它一直在使用:

@MappedSuperclass
Class A {
    @Index(name="pa")
    int a;
    @Index(name="pb")
    int b;
}

根据hibernate文档,我可以用@Table(hibernate注释)注释我的新索引。但我不知道为所需的applyTo参数设置了什么。

以前有人试过这个吗?

1 个答案:

答案 0 :(得分:1)

来自Hibernate Documentation

  

@Table(applyTo =“tableName”,indices = {@Index(name =“index1”,   columnNames = {“column1”,“column2”})})创建已定义的索引   在table tableName的列上。这可以应用于主要   表或任何辅助表。

<强>更新
对于@MappedSuperclass,您可以尝试使用@Tables注释

@Tables(value={@Table(appliesTo="table1", indexes={@Index(name="index1", columnNames={"column1", "column2"})}),  
               @Table(appliesTo="table2", indexes={@Index(name="index1", columnNames={"column1", "column2"})})})

但这似乎相当乏味。 请注意,@ Index注释具有columnNames属性,允许您指定多个列。但是,我不确定您是否应该为每个字段复制索引定义。