我的实体有 3 个字段:id、姓氏和电话号码。我想创建适用于更新所有字段或仅更新一两个字段的方法。
我使用 Hibernate 和 JPA 存储库。当我尝试更新所有字段时,一切正常,但例如,当我只想更新姓氏而不更改电话号码时,我在输出中插入了旧电话号码的 null 。
这是我在控制器中的方法:
@PutMapping("/students/update/{id}")
public String updateStudentById(@ModelAttribute Student student, @ModelAttribute StudentDetails studentDetails,
String lastname, String phoneNumber,
@PathVariable Long id) {
Optional<Student> resultOptional = studentRepository.findById(id);
//Student result =resultOptional.get();
resultOptional.ifPresent((Student result) -> {
result.getStudentDetails().setPhoneNumber(studentDetails.getPhoneNumber()); result.getStudentDetails().setLastname(studentDetails.getLastname());
studentRepository.save(result);
});
return "Student updated";
}
Run Code Online (Sandbox Code Playgroud)
更新的类:
@DynamicUpdate
@Entity
public class StudentDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="lastname")
private String lastname;
@Column(name="phone_number")
private String phoneNumber;
public StudentDetails() {
}
public StudentDetails(Long id, String lastname, String phoneNumber) …Run Code Online (Sandbox Code Playgroud)