[스프링 데이터 JPA] MySql default값 넣기

강우엉·2023년 11월 8일
0

study

목록 보기
28/44

프로젝트 중 게시물의 조회수를 증가시키는 api를 개발중이였다.

처음에는 Style 테이블의 viewCount 컬럼을 NotNull로 지정해줬었는데
save, update 등 기능에는 클라이언트에서 viewCount값을 받을 필요가없었다.
따라서 해당 dto등에서 viewCount 필드를 제거하였는데, 그러면 NotNull 제약조건때문에
제약조건 위반 (ConstraintViolationException )예외가 발생하게된다.

따라서 @NotNull 어노테이션을 제거하니 아래 코드에서 0 + 1이 된게아니라 null + 1이 되어
NullPointerException이 발생하였다.

이 문제를 해결하려면 mysql에서 컬럼에 기본값을 넣는 기능인 default 기능을 사용해야한다.
스프링 데이터 JPA에서는 아래 코드와 같이 구현할 수 있다.

    @Column(columnDefinition = "Integer DEFAULT 0")
    private Integer viewCount;
    
    
    public void increaseViews(Integer viewCount) {
        this.viewCount = viewCount + 1;
    }

※수정사항

  • 위에서 사용한 방법보다 필드에서 바로 0으로 초기화해주는 방법이 더 좋다.
  • @NotNull 제약조건 추가
    @NotNull
    private long viewCount = 0;
profile
우엉이의 코딩 성장일기💻

0개의 댓글