小编Mon*_*ika的帖子

如何使用 JPA 存储库更新实体中的一个字段

我的实体有 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)

java spring spring-data-jpa

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

spring ×1

spring-data-jpa ×1