使用JPA指定索引(非唯一键)

如何定义一个字段,例如email使用JPA批注进行索引。我们需要一个非唯一的键,email因为每天在该字段上有数百万个查询,而没有键的话,它有点慢。

@Entity

@Table(name="person",

uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))

public class Person {

// Unique on code and uid

public String code;

public String uid;

public String username;

public String name;

public String email;

}

我已经看到了特定于hibernate的注释,但是由于我们仍在确定hibernate和数据核之间的关系,因此我试图避免使用特定于供应商的解决方案。

更新:

从JPA

2.1开始,您可以执行此操作。请参阅:此位置不允许使用注释@Index

回答:

使用JPA 2.1,您应该能够做到。

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Index;

import javax.persistence.Table;

@Entity

@Table(name = "region",

indexes = {@Index(name = "my_index_name", columnList="iso_code", unique = true),

@Index(name = "my_index_name2", columnList="name", unique = false)})

public class Region{

@Column(name = "iso_code", nullable = false)

private String isoCode;

@Column(name = "name", nullable = false)

private String name;

}

:如果您需要使用两个或更多列创建和索引,则可以使用逗号。例如:

@Entity

@Table(name = "company__activity",

indexes = {@Index(name = "i_company_activity", columnList = "activity_id,company_id")})

public class CompanyActivity{

以上是 使用JPA指定索引(非唯一键) 的全部内容, 来源链接: utcz.com/qa/429600.html

回到顶部