我正在尝试根据以下内容实施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); }
当我保存对象时,用户名和密码已正确更改,但其他值均为空。
因此,我需要做的是更新用户名和密码,并保留所有剩余数据。
您可以编写自定义更新查询,该查询仅更新特定字段:
@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(); }