[JPA] update시 createDate가 사라진다면?!@!@@!??!!

김나영·2023년 7월 13일
0

SPRING

목록 보기
8/11
post-thumbnail

JPA를 사용하면서 컬럼의 생성일, 수정일을 자동으로 저장해주는 BaseTimeEntity도 함께 사용하고 있었다.
이후 수정을 구현하면서 jpa에서는 update가 따로 있는게 아니라 save()를 다시 진행해서 변경된 데이터만 update되도록 하고 있었다.
이때 수정한 데이터들의 createDate가 사라지는 현상이 발생하고 마는데,,!!

어디간거니 애들아...;(

구글링해보니 코드 한줄로 아주 간단하게 해결할 수 있었다!

기존의 BaseTimeEntity 코드

@Getter
@MappedSuperclass
public class BaseTimeEntity {
    @CreatedDate
    private String createDate;
    @LastModifiedDate
    private String modifiedDate;
    @PrePersist
    public void onPrePersist(){
        this.createDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
    }
    @PreUpdate
    public void onPreUpdate(){
        this.modifiedDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
    }
}

수정한 BaseTimeEntity 코드

@Getter
@MappedSuperclass
public class BaseTimeEntity {
    @CreatedDate
    @Column(updatable = false)
    private String createDate;
    @LastModifiedDate
    private String modifiedDate;
    @PrePersist
    public void onPrePersist(){
        this.createDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
    }
    @PreUpdate
    public void onPreUpdate(){
        this.modifiedDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
    }
}

바로 createdDate에 updateable = false 만 추가해주면 된다!!
@Column(updatable = false)

생성일자는 수정하지 않겠다는 뜻이란다.. 이런 간단한 방법이,,

그것도 모르고 지피티만 혹사시킴...

멍청한자식,,!

profile
응애 나 애기 개발자

0개의 댓글