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