El unique=true
elemento de la Column
anotación y/o la UniqueConstraint
Las anotaciones que se pueden usar en el nivel de la tabla se usan para especificar que una restricción única debe incluirse en el DDL generado .
En otras palabras, no hacen nada durante el tiempo de ejecución, la verificación se deja a la base de datos (lo cual tiene sentido ya que la unicidad no se puede probar a nivel de Java de manera confiable) y si por alguna razón no tiene el correspondiente restricción(es) definida(s) en el nivel de la base de datos, no pasará nada.
Agregue la restricción manualmente:
ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);
Véase también
- Especificación JPA 1.0
- 9.1.4 Anotación de restricción única
- 9.1.5 Anotación de columna
- Documentación de MySQL
A menos que adquiera un bloqueo de tabla (¡ay!), no puede verificar la unicidad con una consulta SQL en un entorno concurrente.