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")
상당히 단순한 문제였지만, 간과하고 지나칠 수도 있었던 문제였다.
'Programming > 트러블슈팅' 카테고리의 다른 글
[Mysql] IN쿼리가 인덱스를 타지 않는 현상 (1) | 2021.01.28 |
---|---|
< json parsing error (0) | 2019.12.28 |
[Spring] IntelliJ에서 종종 Build가 깨지는 오류 (2) | 2019.12.28 |
@RequestParam 날짜형식 LocalDate 매핑 (0) | 2019.08.10 |