小编典典

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

hibernate

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

我在我的实体类中有此批注-下面的代码-
为了对伙伴表有单独的顺序。我希望序列从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;

生成的序列如下所示:

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

我使用的是postgres 9.1。

我错过了什么?这就是我如何实现自己想要的方式?

感谢您的任何帮助!


阅读 304

收藏
2020-06-20

共1个答案

小编典典

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

2020-06-20