我们目前仍在使用Hibernate 4和Hibernate Envers。我们的应用程序使用两个不同的数据库模式,共享相同的域对象。其中一个模式(schema1
(使用envers表(_aud
和revinfo
(,其他模式(schema2
(则不然。在一些业务案例中,值将从schema1
复制到相同的表中schema2
这意味着 envers 表revinfo
存在于schema1
中,但不存在于schema2
中。不知何故,Hibernate 4 可以正常工作这么长时间。我们目前正在将我们的应用程序升级到较新的依赖项,作为第一步,我正在从4.3.11.Final
升级到5.0.12.Final
并面临问题,休眠抱怨表revinfo
丢失schema2
Caused by: org.postgresql.util.PSQLException: ERROR: relation "schema2.revinfo" does not exist
Position: 13
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2182)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1911)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:173)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:622)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:472)
at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:429)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:384)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
我现在做了什么,它似乎有效。schema2
已配置
<prop key="hibernate.listeners.envers.autoRegister">false</prop>
我在那里添加
<prop key="hibernate.integration.envers.enabled">false</prop>
不是必需的,但为了确保我也在实体管理器中添加了schema1
:
<prop key="org.hibernate.envers.default_schema">managed_configuration</prop>
我还不能100%确定副作用。我会回来的。