我正在开发Spring Boot (2.1.7.RELEASE) +Data Jpa + Postgres示例。在此示例中,我明确传递了EMP_IDvalue= 100,接下来我允许 data-jpa 自动获取下一个 Id,即101. 我不确定为什么它不能那样工作??Employee.java@Data@AllArgsConstructor@NoArgsConstructor@EqualsAndHashCode(callSuper = true)@Entitypublic 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;}即使我在下面使用,仍然效果不佳@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;
3 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
我明确传递了 EMP_ID 值 = 100,接下来我允许 data-jpa 自动获取下一个 ID,即 101。我不确定为什么它不能以这种方式工作?
JB Nizet :
序列生成器包括从数据库序列中获取下一个 ID。不是从您自己最后插入的 ID 获取下一个 ID。
我一直想通过始终执行 max id +1 来保存记录。有没有办法用 Spring Data JPA 做到这一点
JB Nizet 再次指出这是一个糟糕的想法。这将需要锁定每个插入的索引或至少锁定索引,包括选择以确定下一个 id。
添加回答
举报
0/150
提交
取消