Como você define um campo, por exemplo, email
como tendo um índice usando anotações JPA. Precisamos de uma chave não exclusiva ativada email
porque existem literalmente milhões de consultas neste campo por dia, e é um pouco lento sem a chave.
@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;
}
Eu vi uma anotação específica de hibernação, mas estou tentando evitar soluções específicas de fornecedores, pois ainda estamos decidindo entre hibernar e datanucleus.
ATUALIZAR:
A partir do JPA 2.1, você pode fazer isso. Veja: A anotação @Index não é permitida para este local