Hibernate 5.0.9 이용시 JAVA 8 LocalDateTime 데이터타입이 PostgreSQL에서 bytea 데이터타입으로 저장되는 문제
조회수 1444회
Hibernate 5.0.9
버전으로 Dialect은 postgresql
을 사용중입니다. Java8의 새로운 java.time
패키지를 사용하기 위해 jackson-datatype-jsr310
의존성을 추가하고 사용중입니다.
질문
다음처럼 필드를 선언하고 DDL
이 자동으로 생성될 때 postgresql
에서 데이터 타입이 bytea
가 됩니다.
@Column
private LocalDateTime created;
헌데 또 다시 조회를 해보면 정상적으로 값을 조회하는걸 볼 수 있는데요, 원래 LocalDateTime
등 새로운 java.time
패키지의 타입을 사용하면 데이터 타입은 bytea
가 되는 것인가요? 직접 DB client 에 접근해서 데이터를 조회하면 알아볼 수 없는 문제가 있는데 불가피한 것인지요?
-
(•́ ✖ •̀)
알 수 없는 사용자
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과 맵핑하는 방법입니다.- 답변 감사합니다. `@Temporal`은 `java.util.Date`타입에 사용할 수 있도록 작성된 애노테이션이어서 `LocalDateTime`등 `java.time.*`패키지의 클래스에는 사용할 수 없습니다. 또한 `@Converter`를 사용하는 방법도 순탄히 적용되지는 않습니다. 링크해주신 글은 이미 질문을 올리기전에 확인했던 글이기도 하고요. 문제가 해결되지는 않았습니다. 확인해봐야 할만한 다른 사안이 있을까요? 알 수 없는 사용자 2016.7.26 09:45
- 혹시 라이브러리 의존성에 hibernate-java8 을 추가해보셨나요? 허대영(소프트웨어융합대학) 2016.7.26 11:43
- 네 5.2.1Final 버전으로 추가되어 있습니다. 알 수 없는 사용자 2016.7.26 13:56
댓글 입력