Java Hibernate希望postgres使用序列而不是表

Java Hibernate希望postgres使用序列而不是表,java,spring,postgresql,hibernate,liquibase,Java,Spring,Postgresql,Hibernate,Liquibase,我的id生成定义如下: @Id @GeneratedValue(generator = "pooled") @GenericGenerator(name = "pooled", strategy = "org.hibernate.id.enhanced.TableGenerator", parameters = { @Parameter(name = "value_column_name", value = "sequence_next_hi_value"), @

我的id生成定义如下:

@Id
@GeneratedValue(generator = "pooled")
@GenericGenerator(name = "pooled", strategy = "org.hibernate.id.enhanced.TableGenerator", parameters = {
        @Parameter(name = "value_column_name", value = "sequence_next_hi_value"),
        @Parameter(name = "prefer_entity_table_as_segment_value", value = "true"),
        @Parameter(name = "optimizer", value = "pooled-lo"),
        @Parameter(name = "increment_size", value = "100")})
private Long id;
我正在使用liquibase生成表,并让hibernate验证模式,以便检测到忘记编辑变更日志。
hibernate\u序列的液化酶定义如下所示:

<changeSet author="david (generated)" id="1477051164467-23">
    <createTable tableName="hibernate_sequences">
        <column name="sequence_name" type="varchar(255)">
            <constraints nullable="false"/>
        </column>
        <column name="sequence_next_hi_value" type="bigint"/>
    </createTable>
</changeSet>

这适用于我的本地SQLServerExpress以及单元测试中使用的h2数据库。当我使用postgres在我们的开发服务器上部署应用程序时,hibernate需要一个数据库序列,而不是使用序列表:
org.hibernate.tool.schema.spi.SchemaManagementException:schema验证:缺少序列[hibernate\u sequence]
我认为使用TableGenerator策略不需要任何数据库上的序列

在hibernate 5.0.11.Final中使用Spring引导

在这一点上,我们不知道什么数据库将用于生产,所以我需要一个便携式解决方案。(至少支持Oracle、MsSQL、Postgres、MySql……所以事实上几乎所有东西都支持)

更新: 我已经安装了一个本地postgres并手动添加了序列,以检查是否使用了它。它确实被使用过(计数器是3),但我不知道是哪个实体使用的。 我还为实体审计启用了hibernate envers。revinfo表使用一个单独的序列,但这个序列是由liquibase创建的

结果是,hibernate envers默认实体使用
@GeneratedValue
,因此需要序列


提前谢谢。如果您需要更多信息,请随时询问。

请查看您的实体并检查它们是否都在使用
org.hibernate.id.enhanced.TableGenerator
。这是唯一可能的原因-如果您查看一下,您会发现它不需要任何序列。

请查看您的实体,并检查它们是否都在使用
org.hibernate.id.enhanced.TableGenerator
。这是唯一可能的原因——如果你看一下,你会发现它不需要任何序列。

嗨,谢谢你的回答。我得调查一下。我有一些实体,它们不是从这个基类继承的,但是它们没有生成Id,只是
@Id
注释。我接受你的回答,因为你说的没错,确实有另一个实体具有
@GeneratedValue
。它不是在我自己的代码中,而是在hibernate-envers中。嗨,谢谢你的回答。我得调查一下。我有一些实体,它们不是从这个基类继承的,但是它们没有生成Id,只是
@Id
注释。我接受你的回答,因为你说的没错,确实有另一个实体具有
@GeneratedValue
。它不是在我自己的代码中,而是在HibernateEnvers中。