【问题标题】:How to make primary key value in each table should start from numeric One (1) - PostgreSQL , Spring data jpa如何使每个表中的主键值应从数字一(1)开始 - PostgreSQL,Spring data jpa
【发布时间】:2019-06-04 10:34:45
【问题描述】:

在我当前的项目中,我们使用 PostgreSQL 作为 DB 和 Spring 数据 JPA 来实现持久性。在所有实体类中,我们都使用 GenerationType.SEQUENCE 来生成主键值。它工作正常。但是,每个表中主键的值不是从 1 开始的。该值始终是其他表的主键最大数量的下一个增量值。

我们该如何改变呢? .如何让每张表的主键值从1开始。

【问题讨论】:

标签: postgresql jpa spring-data-jpa


【解决方案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;
    

    如果我以后遇到这种方法的任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2022-01-28
      • 2021-06-05
      • 1970-01-01
      • 2015-06-25
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多