生成的序列以1而不是1000开始,在注释中设置

我想问一些关于Hibernate创建的数据库序列的帮助。

我在我的实体类中有这个注释 – 下面的代码,以便为partners表提供单独的序列。 我希望序列以1000开头,因为我在部署期间使用import.sql将测试数据插入到我的数据库中,我想避免违反约束。 但是当我想要保留数据而不是我得到约束违规exception时它会告诉我partner_id = 2已经存在的事实。 看起来我错过了什么。

@Id @Column(name = "partner_id") @SequenceGenerator(initialValue=1000, allocationSize=1, name = "partner_sequence", sequenceName="partner_sequence") @GeneratedValue(generator="partner_sequence") private Long partnerId; 

生成的序列如下所示:

 CREATE SEQUENCE partner_sequence INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1; ALTER TABLE partner_sequence OWNER TO postgres; 

我使用postgres 9.1。

我错过了什么? 这是我如何处理我想要的方式?

在此先感谢您的帮助!

initialValuealocattionSize特定于使用序列的hilo算法。 根据这个 initialValue甚至不支持。 我甚至没有看到如何从Java层支持它,因为序列值是在数据库中生成的。

另见hibernate oracle序列产生较大的差距

如果根据本文指定了hibernate.id.new_generator_mappings=true则支持initialValue 。 我有同样的问题,如本文所述,我按照这个方法解决了它。 现在正确生成序列。