JPA:定义索引列

时间:2011-06-23 11:22:34

标签: jpa indexing jpa-2.0

  

可能重复:
  Specifying an index (non unique key) using JPA

有没有办法在enitity列上定义索引,以提高搜索性能? 我看到hibernate给出了@Index和@IndexColumn,但我正在寻找JPA方法来做它。

感谢

以下是我的实体示例,我需要索引名称列

@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
    private long id;
    private String name;
    private String sourceInfo;

  ...

3 个答案:

答案 0 :(得分:26)

不,jpa不提供任何定义或创建索引的功能。对于某些(我不知道)的原因,只能在JPA中创建唯一索引。

如果你没有使用hibernate,或者你真的不想使用这些注释,你需要构建你的注释和处理器来相应地输出或更新数据库,但我不认为它是非常微不足道的(这绝对是非标准的)

修改

以下是如何使用Hibernate

定义索引的示例
@org.hibernate.annotations.Table(
   appliesTo = "table_name",
   indexes = {
      @Index(name="single_column_index", columnNames = "col"),
      @Index(name="multi_column_index", columnNames = {"col1", "col2"}),
   }
)

答案 1 :(得分:2)

没有标准的JPA注释。 (JPA甚至不需要生成DDL)。

对于EclipseLink see the @Index page

答案 2 :(得分:2)

OpenJPA允许您指定非标准注释以定义属性上的索引。

详情为here