如何使每个表中的主键值应从数字一(1)开始 - PostgreSQL,Spring data jpa
Posted
技术标签:
【中文标题】如何使每个表中的主键值应从数字一(1)开始 - PostgreSQL,Spring data jpa【英文标题】:How to make primary key value in each table should start from numeric One (1) - PostgreSQL , Spring data jpa 【发布时间】:2019-06-04 10:34:45 【问题描述】:在我当前的项目中,我们使用 PostgreSQL 作为 DB 和 Spring 数据 JPA 来实现持久性。在所有实体类中,我们都使用 GenerationType.SEQUENCE 来生成主键值。它工作正常。但是,每个表中主键的值不是从 1 开始的。该值始终是其他表的主键最大数量的下一个增量值。
我们该如何改变呢? .如何让每张表的主键值从1开始。
【问题讨论】:
Can I configure Hibernate to create separate sequence for each table by default?的可能重复 【参考方案1】:您需要为每个表配置一个序列。 This answer explains how to do that.
我只是在这里引用它:
我
package-info.java
的内容:@GenericGenerator( name = "optimized-sequence", strategy = "enhanced-sequence", parameters = @Parameter(name="prefer_sequence_per_entity", value="true"), @Parameter(name="optimizer", value="hilo"), @Parameter(name="increment_size", value="50")) package org.example.model; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter;
在使用方面你只需要
@Id @GeneratedValue(generator="optimized-sequence") public long id;
【讨论】:
【参考方案2】:下面的 ID 代码对我有用。
@Id
@SequenceGenerator(name = "MY_ENTITY_SEQ", sequenceName = "MY_ENTITY_SEQ", allocationSize=1)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "MY_ENTITY_SEQ" )
@Column(updatable = false, nullable = false)
private Integer id;
如果我以后遇到这种方法的任何问题,请告诉我。
【讨论】:
以上是关于如何使每个表中的主键值应从数字一(1)开始 - PostgreSQL,Spring data jpa的主要内容,如果未能解决你的问题,请参考以下文章