使用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