小编典典

使用@PATCH方法的Spring REST部分更新

java

我正在尝试根据以下内容实施Manager实体的部分更新:

实体

public class Manager {
    private int id;
    private String firstname;
    private String lastname;
    private String username;
    private String password;

    // getters and setters omitted
}

Controller中的SaveManager方法

@RequestMapping(value = "/save", method = RequestMethod.PATCH)
public @ResponseBody void saveManager(@RequestBody Manager manager){
    managerService.saveManager(manager);
}

将对象管理器保存在Dao impl中。

@Override
public void saveManager(Manager manager) {  
    sessionFactory.getCurrentSession().saveOrUpdate(manager);
}

当我保存对象时,用户名和密码已正确更改,但其他值均为空。

因此,我需要做的是更新用户名和密码,并保留所有剩余数据。


阅读 290

收藏
2020-12-03

共1个答案

小编典典

您可以编写自定义更新查询,该查询仅更新特定字段:

@Override
public void saveManager(Manager manager) {  
    Query query = sessionFactory.getCurrentSession().createQuery("update Manager set username = :username, password = :password where id = :id");
    query.setParameter("username", manager.getUsername());
    query.setParameter("password", manager.getPassword());
    query.setParameter("id", manager.getId());
    query.executeUpdate();
}
2020-12-03