我正在開發(fā)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貢獻(xiàn)1872條經(jīng)驗 獲得超4個贊
我明確傳遞了 EMP_ID 值 = 100,接下來我允許 data-jpa 自動獲取下一個 ID,即 101。我不確定為什么它不能以這種方式工作?
JB Nizet :
序列生成器包括從數(shù)據(jù)庫序列中獲取下一個 ID。不是從您自己最后插入的 ID 獲取下一個 ID。
我一直想通過始終執(zhí)行 max id +1 來保存記錄。有沒有辦法用 Spring Data JPA 做到這一點
JB Nizet 再次指出這是一個糟糕的想法。這將需要鎖定每個插入的索引或至少鎖定索引,包括選擇以確定下一個 id。

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗 獲得超10個贊
EMP_ID
確保數(shù)據(jù)庫上的類型:SERIAL
或Integer
。要與 postgres 一起使用,IDENTITY
它必須是SERIAL。
添加回答
舉報
0/150
提交
取消