Spring : entity 내 Date type jpa 오류

김용재·2024년 11월 12일

상황

 // Concert.java 

 @Column(nullable = false)
  @Temporal(TemporalType.DATE)
  private Date startDate;

  @Column(nullable = false)
  @Temporal(TemporalType.DATE)
  private Date endDate;


// Schedule.java


@Column(name = "concert_date", nullable = false)
  @Temporal(TemporalType.DATE)
  private Date concertDate;

  @Column(name = "concert_time", nullable = false)
  @Temporal(TemporalType.TIME)
  private Date concertTime;

엔티티 내 Date를 타입으로 한 뒤 테이블 내 매핑을 위해서 temporal 어노테이션 적용

Error creating bean with name 'entityManagerFactory' defined in class path resource.. 

TemporalJavaType(javaType=java.sql.Date) as `jakarta.persistence.TemporalType.TIME` not supported 

위 오류 발생

해결방법

  1. java.util.Date 대신 java.time.LocalDatejava.time.LocalDateTime을 사용하는 것이 가장 추천되는 방법임 @Temporal 어노테이션은 JPA 2.1 이전에 사용되었고, 이후부터는 java.time 패키지의 타입들을 사용하는 것이 표준이 되었다.
  2. TemporalType.DATE, TemporalType.TIME, TemporalType.TIMESTAMP 중 하나를 사용하여 날짜/시간의 형태를 지정할 때, TemporalType과 데이터베이스에서 저장하려는 값의 형식이 맞지 않으면 오류가 발생할 수 있다.

java.sql.date 를 사용해서 Date 설정을 해줬는데

java.util.date 와 Temporal 어노테이션을 함께 사용해줘야 했다.

profile
멋진 내가 되기 위한 발걸음

0개의 댓글