Jak zdefiniujesz pole, np. email
Jako posiadające indeks przy użyciu adnotacji JPA. Potrzebujemy nieunikalnego klucza, email
ponieważ w tym polu dziennie są dosłownie miliony zapytań, a bez klucza jest trochę powolny.
@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;
}
Widziałem adnotację specyficzną dla hibernacji, ale staram się unikać rozwiązań specyficznych dla dostawcy, ponieważ wciąż decydujemy między hibernacją a jądrem danych.
AKTUALIZACJA:
Od JPA 2.1 możesz to zrobić. Zobacz: Adnotacja @Index jest niedozwolona w tej lokalizacji