본문 바로가기

Programming/트러블슈팅

JPA 테이블 updated_at이 갱신안되는 문제

DDL에 updated_at을 다음과 같이 설정해주었다.

`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

하지만, JPA로 데이터를 갱신할 때 updated_at이 갱신안되는 문제가 있었다.

 

JPA로 UPDATE할 때는 보통 findBy~ 로 객체를 조회하고 save를 하는 형식으로 필드를 업데이트하는 형식인데,

객체를 조회할 때 당연히 updated_at도 함께 조회된다.

그럼 이 때 save를 할 때 조회했던 updated_at이 set되서 save가 되므로, 스키마 단에서 ON UPDATE을 해주었더라도

이미 set하서 save하므로 이전에 조회했던 updated_at이 저장됐던 것이다.

 

해결법은 다음과 같이 Entity updated_at 칼럼위에 설정해준다.

@field:UpdateTimestamp
@Column(name = "updated_at")

 

상당히 단순한 문제였지만, 간과하고 지나칠 수도 있었던 문제였다.