Spring Boot REVINFO表格缺少序列“revinfo_seq”

juzqafwq  于 2023-01-20  发布在  Spring
关注(0)|答案(1)|浏览(238)

我正在迁移到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

但没有用。

dbf7pr2w

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/

相关问题