JPA를 사용하면서 컬럼의 생성일, 수정일을 자동으로 저장해주는 BaseTimeEntity
도 함께 사용하고 있었다.
이후 수정을 구현하면서 jpa에서는 update가 따로 있는게 아니라 save()를 다시 진행해서 변경된 데이터만 update되도록 하고 있었다.
이때 수정한 데이터들의 createDate가 사라지는 현상이 발생하고 마는데,,!!
어디간거니 애들아...;(
구글링해보니 코드 한줄로 아주 간단하게 해결할 수 있었다!
@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")); } }
@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)
생성일자는 수정하지 않겠다는 뜻이란다.. 이런 간단한 방법이,,
그것도 모르고 지피티만 혹사시킴...
멍청한자식,,!