gpt4 book ai didi

java - Spring Data Jpa不会自动获取下一个ID(PK),它总是从1开始

转载 作者:行者123 更新时间:2023-12-02 01:46:10 25 4
gpt4 key购买 nike

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

员工.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;
}

MainApp.java

@SpringBootApplication
@EnableJpaAuditing
public class MyExampleApplication implements CommandLineRunner {

public static void main(String[] args) {
SpringApplication.run(MyExampleApplication.class, args);
}

@Autowired
private EmployeeRepository employeeRepository;

@Override
public void run(String... args) throws Exception {
Employee e = Employee.eBuilder().empId(100).empName("Shrutika")
.empEmail("shrutika@hotmail.com")
.createUser("Shrutika")
.lastUpdateUser("Shrutika")
.build();

employeeRepository.save(e);

Employee e1 = Employee.eBuilder().empName("Shantaram")
.empEmail("shantaram@hotmail.com")
.createUser("Shantaram")
.lastUpdateUser("Shantaram")
.build();
employeeRepository.save(e1);
}
}

enter image description here

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

@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;

Spring JIRA:https://jira.spring.io/browse/DATAJPA-1588

最佳答案

确保数据库的类型为EMP_ID:SERIALInteger。要将 IDENTITY 与 postgres 一起使用,它必须是 SERIAL ( https://www.postgresql.org/docs/8.1/datatype.html#DATATYPE-SERIAL )。

关于java - Spring Data Jpa不会自动获取下一个ID(PK),它总是从1开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57453120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com