Project

CreatedDate, LastModifiedDate 이슈

변위니 2025. 1. 7. 14:38

문제

사용자 회원가입시 createdDate, ModifiedDate 값이 제대로 들어가지 않는 이슈가 있었다.



원인

@CreatedDate와 @LastModifiedDate를 사용하였는데,
위의 어노테이션을 사용할 때는

@EnableJpaAuditing, @EntityListeners 이 두 어노테이션을 이용해 기능을 활성화 해야 하는데 이 부분을 빠트렸다.



해결

Application 실행 부분에 @EnableJpaAuditing을 추가하여 Auditing 기능을 활성화 한다.

@EnableJpaAuditing
@SpringBootApplication
public class Shop31cmApplication {

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

 

 

 

 

그리고 Entity에 @EntityListeners를 사용해 엔티티의 변화를 감지하여 생성 날짜, 수정 날짜를 자동으로 입력하도록 한다.

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

    @CreatedDate
    @Column(name = "created_at")
    private LocalDateTime createdAt;

    @LastModifiedDate
    @Column(name = "modified_at")
    private LocalDateTime modifiedAt;
}



이번 프로젝트에서는 날짜 관련한 BaseTimeEntity를 별도 추상 클래스로 정의하였다.

해당 클래스는 날짜 관련한 필드를 포함하며, @CreatedDate와 @LastModifiedDate 어노테이션을 사용하여 생성일과 수정일을 자동으로 관리한다.

 

@MappedSuperclass 을 지정하여, 이 클래스를 상속 받는 엔티티들은 createdAt과 modifiedAt 필드를 자동으로 포함하게 된다.

따라서 날짜 관련 필드가 필요한 엔티티들은 이 BaseTimeEntity를 확장하여 사용할 수 있다.

 

 

 

 

ExampleEntity.java

@Entity
public class ExampleEntity extends BaseTimeEntity {
    // 다른 필드들...
}

 

이렇게 하면 ExampleEntity는 BaseTimeEntity의 createdAt과 modifiedAt 필드를 갖는다.