你如何定义一个字段,例如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 和 datanucleus 之间做出决定。
UPDATE:
从 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;
}
Update:如果您需要创建两个或更多列并为其建立索引,您可以使用逗号。例如:
@Entity
@Table(name = "company__activity",
indexes = {@Index(name = "i_company_activity", columnList = "activity_id,company_id")})
public class CompanyActivity{
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)