Hibernate:何时使用@Index注释

时间:2013-09-25 11:11:19

标签: java sql oracle hibernate

在我的场景中,我有一个模式生成脚本来创建表和所需的索引。我想知道是否有必要在hibernate实体中定义@Index注释,如果是这样,为什么?

脚本:

create table issues (id, project_id, .., status_id)

create index idx_issues_projid on issues (project_id)

实体:

@Table(name="issues")
public class DBIssue {

..
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "PROJECT_ID")
  @Index(name="INDEX_TFW_ISSUE_PROJECT_ID")
  private DBProject project;
}

Hibernate配置:

  

<property name="hibernate.hbm2ddl.auto">off</property>

1 个答案:

答案 0 :(得分:6)

我认为你问的是Hibernate @Index注释,它基本上被导入到JPA 2.1中。您可以在任何地方使用@Index,否则主动告诉关系数据库索引列,主要是在您知道要进行大量查找的字段上。在这种情况下,例如,您可能希望“经常”选择属于特定DBIssue的{​​{1}},因此将表中的列编入索引{{1 }}