当我们将 hibernate 版本升级到 5.2.1.final 然后运行 IT 测试用例时,我们得到以下异常,但是当 hibernate 版本为 5.1.17.final 时,相同的 IT 将通过。
以下是我们在休眠中获得的异常详细信息:
org.springframework.dao.InvalidDataaccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateaccessException(HibernateJpaDialect.java:281)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataaccessUtils.translateIfNecessary(DataaccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
at org.springframework.aop.framework.ReflectiveMethodinvocation.proceed(ReflectiveMethodinvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
以下是我们与 PostGres 相关的例外情况。
Caused by: org.postgresql.util.PSQLException: ERROR: column "emp_id" is of type integer but expression is of type bytea
Hint: You will need to rewrite or cast the expression.
Position: 64
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2468)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2211)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:309)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:446)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:370)
at org.postgresql.jdbc.PgPreparedStatement.executeWithflags(PgPreparedStatement.java:149)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:124)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
... 50 more
以下是项目中使用的版本:
<hibernate.version>5.2.1.Final</hibernate.version>
<hibernate-extensions.version>1.2.1</hibernate-extensions.version>
<hibernate.validator.version>6.0.18.Final</hibernate.validator.version>
<hibernate-jpa-21.version>1.0.0.Final</hibernate-jpa-21.version>
<validation-api.version>2.0.0.Final</validation-api.version>
<postgres.jdbc.driver.version>42.2.6</postgres.jdbc.driver.version>