category 테이블에 created_at 이라는 컬럼이 없는데 자꾸 이 컬럼의 값이 없다고 뜨면서 Postman API 테스트에 500 에러로 실패한다.

아무리 봐도 없는 컬럼인데 이상해서 연동된 DB를 새로고침하니 갑자기 created_at 과 updated_at이 떴다. 카테고리 엔티티 상에는 분명 없는데 말이다.

사실 처음에 카테고리엔티티가 BaseTimeEntity(created_at 과 updated_at를 필드로 가지는 기본 엔티티)를 상속받은 형태로 구성했는데 추후에 삭제한 적이 있다. 그런데 이게 인텔리제이와 Mysql 과의 연동에서 변화가 업데이트가 안되는 경우가 있다고 한다.
BaseTimeEntity를 상속받았던 이전 코드
@Entity
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Category extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private int dept;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn (name = "parent_id")
private Category parent;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<Category> child = new ArrayList<>();
@Builder
public Category(Long id, String name, Category parent, List<Category> child) {
this.id = id;
this.name = name;
this.dept = parent != null ? parent.getDept() + 1 : 1;
this.parent = parent;
this.child = child;
}
BaseTimeEntity.java
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreationTimestamp
@Column(name = "created_at", nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
private Timestamp createdAt;
@UpdateTimestamp
@Column(name = "updated_at", nullable = false, columnDefinition = "TIMESTAMP")
private Timestamp updatedAt;
}
Mysql과 IntelliJ를 재실행했더니 해당 컬럼들이 사라졌다. Postman API 테스트에도 잘 작동하는 모습을 확인할 수 있었다. (허무;)

