본문 바로가기
TIL

[JPA] BaseTimeEntity @CreatedDate 오류

by 긍고 2021. 8. 29.
반응형

최근 JPA를 이용하여 진행하고 있는 토이 프로젝트가 있는데 Entity의 생성시간을 자동으로 캐치해서 DB에 기록해주는 @CreatedDate 어노테이션이 제대로 동작하지 않는 문제가 생겼다.

 

보통 JPA를 사용하면 아래와 같은 entity를 생성하고 생성 시점이나 수정 시점을 자동으로 기록하고 싶은 entity는 해당 entity를 상속하게 하여 간편하게 구현할 수 있다. 그런데 생성시점을 자동 기록해주는 @CreatedDate를 사용한 createdDt 필드가 계속해서 null로 들어가는 문제가 발생했다.

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {

    @CreatedDate
    private LocalDateTime createdDt;

    @LastModifiedDate
    private LocalDateTime updatedDt;
}

DB에 현재 시간이 아닌 null 값이 들어감

인터넷을 찾아보니 현재 시간을 자동 기록하기 위해 BaseTimeEntity 위에 @EntityListeners(AuditingEntityListener.class) 를 사용하는데 이를 활성화시켜주지 않아서 null 값이 들어가던 것이었다.

@EnableJpaAuditing
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}

위와 같이 해당 application에 @EnableJpaAuditing 어노테이션을 붙여주어 활성화 시켜주면 아래와 같이 현재 시간이 제대로 들어가는 것을 확인할 수 있다.

현재 시간이 제대로 들어감

댓글