postgresql Spring数据JPA:主键不按顺序自动递增

ny6fqffe  于 2023-03-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(186)

在spring data jpa Application中,我创建了一个带有@entity annotation的模型。我将模型数据保存到表中。我自动递增主键。但是当我将数据保存到表中时,它不是顺序自动递增的。

@GeneratedValue(strategy = GenerationType.AUTO)

类文件:

@Entity
@Table(name="exception")
public class Exception implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "exception_seq_generator")
    @SequenceGenerator(name = "exception_seq_generator", sequenceName = "exception_seq")
    @Column(name="exception_id")
    public Integer exceptionId;
    
    @Column(name="status_code")
    public Integer statusCode;
    
    public String message;
    public String status;
    public String error;
    //Getter and setter

表格:

谁能告诉我为什么主键不自动按顺序递增?为什么不取2,3,4.....

enxuqcxy

enxuqcxy1#

首先尝试设置allocationSize

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "exception_seq_generator")
@SequenceGenerator(name = "exception_seq_generator", sequenceName = "exception_seq", allocationSize=1)
@Column(name="exception_id")
public Integer exceptionId;

同时检查数据库中的当前序列,它现在可能有错误的值。

更简单的方法:

在PostgreSQL DB中定义主键列为SERIAL:

CREATE TABLE xy (
   id SERIAL PRIMARY KEY;
);

并使用以下内容注解列:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

SERIAL类型为您创建了一个自动递增序列,并且您在JPA实体中没有那么多开销。

相关问题