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

Say*_*ndo 6 java hibernate jpa java-ee

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

我在我的实体类中有这个注释 - 下面的代码,以便为partner表提供单独的序列.我希望序列以1000开头,因为我在部署期间使用import.sql将测试数据插入到我的数据库中,我想避免违反约束.但是当我想要保留数据而不是我得到约束违规异常时,它告诉我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;
Run Code Online (Sandbox Code Playgroud)

生成的序列如下所示:

CREATE SEQUENCE partner_sequence
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE partner_sequence
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

我使用postgres 9.1.

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

在此先感谢您的帮助!

nol*_*exa 5

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


Ale*_*man 3

initialValue并且alocattionSize特定于hilo使用序列的算法。据此甚至 initialValue不支持。我什至不知道 Java 层如何支持它,因为序列值是在数据库中生成的。

另请参阅hibernate oracle序列产生大间隙