Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

@Column(unique=true) parece não funcionar


O unique=true elemento da Column anotação e/ou a UniqueConstraint anotação que pode ser usada no nível da tabela são usadas para especificar que uma restrição exclusiva deve ser incluída no DDL gerado .

Em outras palavras, eles não fazem nada durante o tempo de execução, a verificação é deixada para o banco de dados (o que faz sentido, pois a unicidade não pode ser testada no nível Java de maneira confiável) e se por algum motivo você não tiver o correspondente restrição(ões) definida(s) no nível do banco de dados, nada acontecerá.

Adicione a restrição manualmente:
ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);

Veja também

  • Especificação JPA 1.0
    • 9.1.4 Anotação de restrição exclusiva
    • 9.1.5 Anotação de coluna
  • Documentação do MySQL

A menos que você adquira um bloqueio de tabela (ai!), você não pode verificar a unicidade com uma consulta SQL em um ambiente simultâneo.