JPA:定义索引列

lil*_*ili 9 indexing jpa jpa-2.0

可能重复:
使用JPA指定索引(非唯一键)

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

谢谢

这是我的实体的一个例子,我需要索引一个名称列

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

  ...
Run Code Online (Sandbox Code Playgroud)

Aug*_*sto 27

不,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"}),
   }
)
Run Code Online (Sandbox Code Playgroud)

  • 对于它的价值,JPA 2.1现在可以在@Table注释中做索引,参见:https://blogs.oracle.com/arungupta/entry/jpa_2_1_schema_g​​eneration (5认同)