Spring Data Jpa 不会自动获取 Next Id (PK),它总是从 1 开始

我正在开发Spring Boot (2.1.7.RELEASE) +Data Jpa + Postgres示例。在此示例中,我明确传递了EMP_IDvalue= 100,接下来我允许 data-jpa 自动获取下一个 Id,即101. 我不确定为什么它不能那样工作??


Employee.java


@Data

@AllArgsConstructor

@NoArgsConstructor

@EqualsAndHashCode(callSuper = true)

@Entity

public class Employee extends BaseEntity{


    @Id

    @GeneratedValue(strategy = IDENTITY)

    @Column(name = "EMP_ID", unique = true, nullable = false)

    private Integer empId;


    @Column(name = "EMP_NAME", unique = true, nullable = false)

    private String empName;


    @Column(name = "EMP_EMAIL", unique = true, nullable = false)

    private String empEmail;



    @Builder(builderMethodName="eBuilder")

    public Employee(Integer empId, String empName, String empEmail,

            Instant createdDate, Instant lastUpdateDate,String createUser, String lastUpdateUser) {

        super(createdDate, lastUpdateDate, createUser, lastUpdateUser);

        this.empId = empId;

        this.empName = empName;

        this.empEmail = empEmail;

    }

}

BaseEntity.java


@Data

@MappedSuperclass

@NoArgsConstructor

@AllArgsConstructor

@EntityListeners(AuditingEntityListener.class)

public class BaseEntity {

    @CreatedDate

    @Column(name = "createdDate", nullable = false, updatable = false)

    private Instant createdDate;


    @Column(name = "lastUpdateDate", nullable = false)

    @LastModifiedDate

    private Instant lastUpdateDate;


    @Column(name = "createUser", nullable = false, length = 50)

    private String createUser;


    @Column(name = "lastUpdateUser", length = 50)

    private String lastUpdateUser;

}


http://img1.sycdn.imooc.com/647c3b980001e71510270109.jpg

即使我在下面使用,仍然效果不佳


@Id

    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "emp_generator")

    @SequenceGenerator(name="emp_generator", sequenceName = "emp_seq", allocationSize=1)

    @Column(name = "EMP_ID", unique = true, nullable = false)

    private Integer empId;



慕娘9325324
浏览 202回答 3
3回答

UYOU

这将起作用:@GeneratedValue(strategy=GenerationType.SEQUENCE)

守着一只汪

我明确传递了 EMP_ID 值 = 100,接下来我允许 data-jpa 自动获取下一个 ID,即 101。我不确定为什么它不能以这种方式工作?JB Nizet :序列生成器包括从数据库序列中获取下一个 ID。不是从您自己最后插入的 ID 获取下一个 ID。我一直想通过始终执行 max id +1 来保存记录。有没有办法用 Spring Data JPA 做到这一点JB Nizet 再次指出这是一个糟糕的想法。这将需要锁定每个插入的索引或至少锁定索引,包括选择以确定下一个 id。

慕桂英546537

EMP_ID确保数据库上的类型:SERIAL或Integer。要与 postgres 一起使用,IDENTITY它必须是SERIAL。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java