【发布时间】:2017-03-08 10:06:05
【问题描述】:
在将 Spring Data JPA 与 postgres 集成时。 我有一个代表以下 java 对象的 DB 表。
private class A {
@Column(name="createdTime", columnDefiniton="TIMESTAMP WITH TIMEZONE")
OffsetDateTime dateTime;
}
我正在尝试保存到此表,但是,我得到了
Caused by: org.postgresql.util.PSQLException: ERROR: column "created_time" is of type timestamp with time zone but expression is of type bytea
Hint: You will need to rewrite or cast the expression.
Position: 131
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2182) ~[postgresql-9.4-1206-jdbc42.jar:9.4]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1911) ~[postgresql-9.4-1206-jdbc42.jar:9.4]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:173) ~[postgresql-9.4-1206-jdbc42.jar:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:645) ~[postgresql-9.4-1206-jdbc42.jar:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:495) ~[postgresql-9.4-1206-jdbc42.jar:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:441) ~[postgresql-9.4-1206-jdbc42.jar:9.4]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
我确实注意到 postgres jdbc jar 有 2 个版本的 AbstractJdbcStatement & AbstractJdbc42 语句。由于 postgresql-9.4-1206-jdbc42.jar:9.4 支持 JDBC 4.2,我假设调用错误的类会导致此异常。
【问题讨论】:
-
你能添加完整的异常,以及 jpa 的版本和底层的 impl 及其版本吗?另外,请阅读以下内容:stackoverflow.com/questions/23718383/…
-
@Taylor:我正朝着解决这个问题的正确方向前进。问题是,我正在使用 spring boot 数据 jpa 启动它使用休眠核心版本 5.0.11,它不调用 postgres jdbc 4.2 支持的类。
标签: spring postgresql java-8 spring-data-jpa