Security 학습을 하던 도중 DB 테이블 자동 생성 과정에서 Model를 짜던 중 아래와 같은 에러가 발생했다.
Failed to initialize JPA EntityManagerFactory: Unsupported property type [java.lang.String] for @CreationTimestamp or @UpdateTimestamp generator annotation
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unsupported property type [java.lang.String] for @CreationTimestamp or @UpdateTimestamp generator annotation
Hibernate maven을 추가해줘야 하나 했는데 추가해줘도 같았다. 다른 자료를 찾아보니 @CreationTimestamp 대안으로 @CreatedDate 가 있었고 이걸로 바꿔주니 해결되었다. 여기서 둘의 기능 상 차이는 없는 것 같다.
@CreationTimestamp는 Hibernate에서 제공하는 어노테이션이고
@CreatedDate는 Spring 에서 제공하는 어노테이션이다.
요즘에는 Hibernate 어노테이션 자체를 점점 사용하지 않고 @CreatedDate가 JPA, JDBC, R2DBC, mongoDB, Cassandra등 Spring Data에서 사용된다.
결론은 @CreatedDate 쓰자.