如何定义字段,例如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;
}
Run Code Online (Sandbox Code Playgroud)
我已经看到了一个特定于hibernate的注释,但我正在尝试避免供应商特定的解决方案,因为我们仍然在决定hibernate和datanucleus之间.
更新:
从JPA 2.1开始,您可以这样做.请参阅:此位置不允许使用注释@Index
当试图使用@Index注释时javax.persistence,Eclipse给了我这个错误.
我在一个java.util.Date字段之前使用它,在一个用注释的类中@Entity.
之前,我org.hibernate.annotations.Index在完全相同的地方使用它很好.
在我将hibernate-core从4.1.9.Final升级到4.3.0.Beta3并将hibernate-commons-annotation从4.0.1升级到4.0.2之后,问题就出现了.它说@Index已弃用并推荐javax.persistence一个.
我发现的所有文档和示例都放在了@Index课堂成员面前.我错过了什么?