Указание индекса (неуникальный ключ) с использованием JPA - PullRequest
80 голосов
/ 04 августа 2010

Как определить поле, например, 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;
}

Я видел специфическую для спящего аннотацию, ноЯ стараюсь избегать решений, специфичных для поставщиков, поскольку мы все еще выбираем между спящим и зародышевым ядром.

ОБНОВЛЕНИЕ:

Начиная с JPA 2.1, вы можете сделать это.См .: Аннотация @Index запрещена для этого местоположения

Ответы [ 11 ]

0 голосов
/ 04 августа 2010

Это невозможно сделать с помощью аннотации JPA.И это имеет смысл: если UniqueConstraint четко определяет бизнес-правила, индекс - это просто способ ускорить поиск.Так что это действительно должно быть сделано администратором базы данных.

...