Я разрабатываю пример Spring Boot (2.1.7.RELEASE) +Data Jpa + Postgres. В этом примере я явно передаю EMP_ID
value=100
, а затем я разрешаю data-jpa автоматически принимать следующий идентификатор, который равен 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("[email protected]")
.createUser("Shrutika")
.lastUpdateUser("Shrutika")
.build();
employeeRepository.save(e);
Employee e1 = Employee.eBuilder().empName("Shantaram")
.empEmail("[email protected]")
.createUser("Shantaram")
.lastUpdateUser("Shantaram")
.build();
employeeRepository.save(e1);
}
}
Даже если бы я использовал ниже, все равно что-то не работает
@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
initialValue=101
, если у меня уже есть 100 в качестве максимального идентификатора, присутствующего в БД?@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="seq") @SequenceGenerator(name="seq", initialValue=99, allocationSize=1)
- person Jeff Cook   schedule 12.08.2019