Mysql
 sql >> Base de données >  >> RDS >> Mysql

@Column(unique=true) ne semble pas fonctionner

Le unique=true élément de la Column l'annotation et/ou l'UniqueConstraint les annotations pouvant être utilisées au niveau de la table sont utilisées pour spécifier qu'une contrainte unique doit être incluse dans le DDL généré .

En d'autres termes, ils ne font rien pendant l'exécution, la vérification est laissée à la base de données (ce qui est logique car l'unicité ne peut pas être testée de manière fiable au niveau Java) et si pour une raison quelconque vous n'avez pas le correspondant contrainte(s) définie(s) au niveau de la base de données, rien ne se passera.

Ajoutez la contrainte manuellement :

ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);

Voir aussi

  • Spécification JPA 1.0
    • 9.1.4 Annotation UniqueConstraint
    • 9.1.5 Annotation des colonnes
  • Documentation MySQL

Sauf si vous acquérez un verrou de table (aïe !), vous ne pouvez pas vérifier l'unicité avec une requête SQL dans un environnement concurrent.