在我的场景中,我有一个模式生成脚本来创建表和所需的索引。我想知道是否有必要在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>
答案 0 :(得分:6)
我认为你问的是Hibernate @Index
注释,它基本上被导入到JPA 2.1中。您可以在任何地方使用@Index
,否则主动告诉关系数据库索引列,主要是在您知道要进行大量查找的字段上。在这种情况下,例如,您可能希望“经常”选择属于特定DBIssue
的{{1}},因此将表中的列编入索引{{1 }}