我正在迁移到SpringBoot 3.0.1,并将“hibernate-envers”版本更新为“6.1.6.Final”。我的数据库是PostgreSQL 13.6。Hibernate配置为创建数据库模式:spring.jpa.hibernate.ddl-auto:create
启动应用程序后,我得到以下错误:
pim 2022-12-27 12:00:13,715 WARN C#c7b942ec-33b4-4749-b113-22cbb2946a8d [http-nio-9637-exec-1] SqlExceptionHelper/133 - SQL Error: 0, SQLState: 42P01
pim 2022-12-27 12:00:13,715 ERROR C#c7b942ec-33b4-4749-b113-22cbb2946a8d [http-nio-9637-exec-1] SqlExceptionHelper/138 - ERROR: relation "revinfo_seq" does not exist
Position: 16
revinfo表如下所示:
create table revinfo
(
revision bigint not null
primary key,
client_id varchar(255),
correlation_id varchar(255),
origin varchar(255),
request_id varchar(255),
revision_timestamp bigint not null,
timestamp_utc timestamp with time zone,
user_name varchar(255)
);
序列“revinfo_seq”不存在,但在带有envers的旧DB结构中
5.6.8.Final
和SpringBoot 2.6.6它也不存在没有任何问题.我错过了什么?
我试着切换参数
org.hibernate.envers.use_revision_entity_with_native_id
但没有用。
1条答案
按热度按时间dbf7pr2w1#
您可以使用以下属性来解决此问题:
spring.jpa.properties.hibernate.id.db_structure_naming_strategy: legacy
使用 Spring Boot 3.0.1进行测试
原因:
Hibernate 6改变了序列命名策略,所以它搜索以“_seq”结尾的序列。你可以在这里得到一个非常详细的解释:https://thorben-janssen.com/sequence-naming-strategies-in-hibernate-6/