Spring Data MongoDB를 사용하던 중 mongodb로 작업을 하고 있는데 계속 @CreatedDate에 저장이 되지 않는 문제가 발생하였습니다.
@Document
public class MongoEntity {
@Id
private String id;
@CreatedDate
private LocalDateTime createDate;
@LastModifiedDate
private LocalDateTime updateDate;
}
위 코드에서 id 필드를 미리 지정하면, Spring Data MongoDB는 해당 객체를 기존 엔티티로 간주하여 @CreatedDate와 @LastModifiedDate 필드의 자동 설정을 수행하지 않게 됩니다.(jpa와 같은 원리로 동작하고 있다고 생각하면 될 것 같습니다.)
MongoDB Auditing 활성화
먼저 Spring Data MongoDB의 Auditing을 설정합니다.
@Configuration
@EnableMongoAuditing
public class MongoConfig {
}
Auditing Handler:
AuditingEntityListener를 통해 생성 및 수정 날짜가 자동으로 설정되도록 합니다.
@Document
@EntityListeners(AuditingEntityListener.class)
public class MongoEntity {
@Id
private String id;
@CreatedDate
private LocalDateTime createDate;
@LastModifiedDate
private LocalDateTime updateDate;
}
이 때 주의할점으로는 @CreatedDate,@LastModifiedDate 기능을 사용하고자 한다면 기존의 id를 사용하지 않고 새로운 id를 사용할 수 있도록 해야합니다. spring data jpa를 사용하던 것과 비슷하다는 것을 알 수 있습니다.