@Column(unique=true) does not seem to work

 

    @Column(unique=true )
    private String name;
 
 
 First Solution :
                        ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);
 
 
 Second Solution :
 
 

For future users stumbling on this issue. There are lots of great suggestions here; read through them as well as your error messages; they will be enough to resolve your problem.

A few things I picked up in my quest to get @Column(unique=true) working. In my case I had several issues (I was using Spring Boot, FYI). To name a couple:

  • My application.properties was using 
  •  spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 
  •  despite using MySQL 8. I fixed this with  
  • spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
  • Check your version (I did this through the command line: mysql> STATUS).
  • I had a User class annotated as an @entity which meant that JPA was trying to create a user table which is one of MySQL's (as well as postgres) reserved keywords. I fixed this with @Table(name = "users").
 
          

Comments