首页 > 解决方案 > Liquibase 生成空的 ALTER SEQUENCE 更改

问题描述

我有一组 JPA 实体,它们的 ID 由序列生成:

@GenericGenerator(
    name = "catalog_items_history_seq",
    strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
    parameters = [
        (Parameter(name = "sequence_name", value = "catalog_item_history_sequence")),
        (Parameter(name = "initial_value", value = "1")),
        (Parameter(name = "increment_size", value = "1"))
    ]
)

class CatalogItemHistory {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "catalog_items_history_seq")
    var id: Long = -1
}

当我diffChangeLog第一次运行 gradle 任务时,我得到了正确的 CREATE SEQUENCE 语句,并且序列创建好了。

但是,如果我再次运行该任务,我的更改日志包含如下更改:

<changeSet author="raibaz (generated)" id="1582110272824-1">
    <alterSequence sequenceName="catalog_item_history_sequence"/>
</changeSet>

这会导致语法错误,因为它们生成的 SQLALTER SEQUENCE catalog_item_history_sequence是无效的,因为它实际上并没有改变任何东西。

当我运行 liquibase 来更新我的数据库模式时,我得到的是:

Caused by: liquibase.exception.DatabaseException: ERROR: syntax error at end of input
  Posizione: 52 [Failed SQL: (0) ALTER SEQUENCE public.catalog_item_history_sequence]

我的数据库是 PostgreSQL 12。

我错过了什么?有没有办法阻止 liquibase 创建这些更改?

标签: postgresqlliquibaseliquibase-hibernate

解决方案


推荐阅读