Элемент unique=true
аннотации Column
и / или аннотации UniqueConstraint
, которые можно использовать на уровне таблицы, используются для указания того, что уникальное ограничение должно быть включено в сгенерированный DDL .
Другими словами, они ничего не делают во время выполнения, проверка оставлена для базы данных (что имеет смысл, поскольку уникальность не может быть надежно проверена на уровне Java 1 ) и если по какой-либо причине у вас нет соответствующих ограничений, определенных на уровне базы данных, ничего не произойдет.
Добавьте ограничение вручную:
ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);
См. также
- Спецификация JPA 1.0
- 9.1.4 Аннотация UniqueConstraint
- 9.1.5 Аннотация столбца
- Документация MySQL
1 Если вы не получили блокировку таблицы (ой!), Вы не можете проверить уникальность с помощьюSQL-запрос в параллельной среде.