有没有办法在enitity列上定义索引,以提高搜索性能? 我看到hibernate给出了@Index和@IndexColumn,但我正在寻找JPA方法来做它。
感谢
以下是我的实体示例,我需要索引名称列
@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
private long id;
private String name;
private String sourceInfo;
...
答案 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。