Il unique=true
elemento della Column
annotazione e/o il UniqueConstraint
le annotazioni che possono essere utilizzate a livello di tabella vengono utilizzate per specificare che un vincolo univoco deve essere incluso nel DDL generato .
In altre parole, non fanno nulla durante il runtime, la verifica è lasciata al database (il che ha senso in quanto l'unicità non può essere testata a livello Java in modo affidabile) e se per qualsiasi motivo non si dispone del corrispondente vincolo/i definito/i a livello di database, non accadrà nulla.
Aggiungi il vincolo manualmente:
ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);
Vedi anche
- Specifica JPA 1.0
- 9.1.4 Annotazione UniqueConstraint
- 9.1.5 Annotazione colonna
- Documentazione MySQL
A meno che tu non acquisisca un blocco tabella (ahi!), non puoi verificare l'unicità con una query SQL in un ambiente simultaneo.