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

标签 java hibernate jakarta-ee jpa

我想寻求一些关于 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。

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

提前感谢您的帮助!

最佳答案

如果根据 this article 指定 hibernate.id.new_generator_mappings=true,则支持

initialValue .我遇到了与这篇文章中所述相同的问题,我按照这个食谱解决了它。现在可以正确生成序列。

关于java - 生成的序列以 1 开头,而不是在注释中设置的 1000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14152348/

相关文章:

Java iterator.hasNext() 始终为真

java - Hibernate/JPA - 访问 SingularAttribute 参数时出现 NullPointerException

eclipse - web.xml 版本控制

java - 使用HashMap创建动态函数调用

java - 如何创建其中包含 MySQL 数据库的可执行文件?

java - eclipse 项目中缺少类路径变量

java - 调用后端、多路径变量、Ext Js

java - Hibernate - 在同一事务中使用 getNamedQuery 保存和插入

java - 在同一根上下文下托管静态内容和 JAX-RS 服务

linux - 部署 Java EE 应用程序的变音符号