
프론트엔드와 기능 연결작업을 하던 중 
Portfolio table과 coin table의 연결 테이블인 PortfolioCoin table에서 created_at 컬럼이 저장되지 않고 있다는 사실을 알게 되었습니다.
두 테이블을 확인한 결과 createdAt 컬럼이 저장과 동시에 값이 들어오고 있다는 것을 확인하였습니다.
원인은 모든 엔티티들이 상속받는 Timestamped entity에 있었습니다.
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Timestamped {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column
protected LocalDateTime updatedAt;
@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
this.updatedAt = null; // 생성 시에는 updatedAt을 null로 유지
}
}
각 entity마다 중복된 createdAt과 updatedAt을 기본 entity로 만들어,
@EntityListeners(AuditingEntityListener.class)어노테이션을 통해 Api를 요청받으면 값을 자동으로 저장되게 하였습니다.
단일 entity에서는 제대로 저장이 되었지만, 연결테이블에서는 저장이 안되고 있었습니다.
SpringApplication 실행 함수 위에 @EnableJpaAuditing 어노테이션을 설정하여 해결하였습니다.
@EnableJpaAuditing은 주석을 통해 JPA에서 값이 변경될 경우 엔티티의 생성 및 수정정보를 자동으로 등록하고 관리할 수 있도록 하고 있습니다.(Annotation to enable auditing in JPA via annotation configuration.)
EntityListeners(AuditingEntityListener.class)를 통해 설정을 했지만, 어플리케이션 실행시 활성화가 되지 않아서 생긴 오류였습니다.

Annotation Interface EnableJpaAuditing
Auditing
[Spring] @EnableJpaAuditing 기능 사용해 생성/수정 시간 등록하기