[스프링부트] 테이블 속성 값을 "unique=true" 로 설정한 것이 적용되지 않을 때

장서연·2022년 2월 5일
0

userName 속성 unique 하게 설정한 것이 적용되지 않는다면 DB 를 한번 날리고 다시 생성하면 제대로 적용됨.

  • application.yml 의 ddl-auto 속성
  • update -> create 로 변경
  jpa:

    open-in-view: true
    hibernate:
      ddl-auto: create
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false
    show-sql: true
    database: mysql
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    properties:
      hibernate.format_sql: true

이렇게 하면 서버를 재부팅할 때마다 테이블을 drop 하고 다시 생성하게 된다.


public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id; // 오라클: 시퀀스, MySQL: auto_increment 전략

    @Column(nullable = false, length = 30, unique = true)
    private String userName; // 아이디
    
    ...

unique = true 설정이 적용되지 않았던이유는, 자바 애플리케이션에서 model은 설정이 되었는데 DB 테이블에 속성 적용이 되지 않아서 똑같은 유저네임이 DB에 들어가도 에러가 발생하지 않는 현상이 일어났던 것임.

0개의 댓글