Hibernate 5.0.9 이용시 JAVA 8 LocalDateTime 데이터타입이 PostgreSQL에서 bytea 데이터타입으로 저장되는 문제


Hibernate 5.0.9버전으로 Dialectpostgresql을 사용중입니다. Java8의 새로운 java.time패키지를 사용하기 위해 jackson-datatype-jsr310의존성을 추가하고 사용중입니다.

질문

다음처럼 필드를 선언하고 DDL이 자동으로 생성될 때 postgresql에서 데이터 타입이 bytea가 됩니다.

@Column
private LocalDateTime created;

헌데 또 다시 조회를 해보면 정상적으로 값을 조회하는걸 볼 수 있는데요, 원래 LocalDateTime등 새로운 java.time패키지의 타입을 사용하면 데이터 타입은 bytea가 되는 것인가요? 직접 DB client 에 접근해서 데이터를 조회하면 알아볼 수 없는 문제가 있는데 불가피한 것인지요?

  • 2016년 07월 25일에 작성됨

조회수 191


1 답변


@Column(name = "run_from")
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime created;

https://java.net/jira/browse/JPA_SPEC-63 에 따르면, 기본적으로 되어야 할 것같은데, 위와 같이 한번해보세요. 확인해보지는 못했지만, postgresql jdbc driver 혹은 dialect 의 문제일 수도 있습니다. postgresql을 위한 dialect는 postgresql 버전에 따라 있는 것으로 기억하는 데, 이를 확인해보는 것도 좋을 것 같습니다.

그리고 안될 경우 http://www.thoughts-on-java.org/persist-localdate-localdatetime-jpa/ 링크의 내용을 참고보는 것이 좋을 것 같습니다. LocalDateTime을 Database의 java.sql.Timestamp 로 변경하여, DB의 Timestamp Column과 맵핑하는 방법입니다.

  • 2016년 07월 25일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

  • 답변 감사합니다. `@Temporal`은 `java.util.Date`타입에 사용할 수 있도록 작성된 애노테이션이어서 `LocalDateTime`등 `java.time.*`패키지의 클래스에는 사용할 수 없습니다. 또한 `@Converter`를 사용하는 방법도 순탄히 적용되지는 않습니다. 링크해주신 글은 이미 질문을 올리기전에 확인했던 글이기도 하고요. 문제가 해결되지는 않았습니다. 확인해봐야 할만한 다른 사안이 있을까요?    땡큐   2016.7.26 09:45     
  • 혹시 라이브러리 의존성에 hibernate-java8 을 추가해보셨나요?    허대영(Daeyoung Heo)   2016.7.26 11:43     
  • 네 5.2.1Final 버전으로 추가되어 있습니다.    땡큐   2016.7.26 13:56     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close