当前位置: 首页 > 面试题库 >

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

夹谷烨赫
2023-03-14
问题内容

我正在尝试根据以下内容实施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();
}


 类似资料:
  • 问题内容: 我们正在使用Django / TastyPie作为后端REST服务提供程序来构建Web应用程序,并使用大量基于$ resource的服务对服务器上的CRUD对象进行构建,从而构建基于AngularJS的前端。到目前为止一切正常! 但是, 当我们只想更新一个对象上的一个或两个更改的字段时,我们想减少要传送的数据量。 DeliciousPie使用HTTP PATCH方法支持此功能。我们在对

  • 我试图在我的客户端使用JAX RS的CXF实现补丁方法。首先,我将补丁注释定义为 参考这里的内容:如何为JAX-RS提供@PATCH注释? 然后我发现@PATCH被添加到CXF 3.1.2中,所以我在我的专家的pom中更改了版本.xml并且内部有,代码实际上看起来与我上面发布的内容完全相同。 但是,当我尝试在我的服务定义上使用此注释时 正如我在上面发布的queston链接中所说的,我以< code

  • 问题内容: 我正在寻找一种通过MySQL查询更新字符串的一部分的方法。 例如,如果我有10条记录,所有记录都包含“字符串”作为字段值的一部分(例如,“某物/字符串”,“某物/字符串lookhere”,“某物/字符串/等”),是否可以更改“字符串”通过一个查询将每一行的’设置为’anothervalue’,以便结果为’something / anothervalue’,’something / an

  • 我有一个项目,我正在使用Spring MVC Jackson构建REST服务。假设我有以下java实体 有时候,我只是想更新布尔值,我不认为发送带有大字符串的整个对象只是为了更新一个简单的布尔值是个好主意。所以,我考虑过使用PATCH HTTP方法只发送需要更新的字段。所以,我在我的控制器中声明了以下方法: 问题是:我如何知道哪些字段需要更新?例如,如果客户端只想更新布尔值,我将得到一个带有空“a

  • 首先,一些定义: PUT在第9.6节RFC 2616中定义: PUT方法请求将封闭的实体存储在提供的request-uri下。如果Request-URI引用的是一个已经存在的资源,则所包含的实体应被视为驻留在原始服务器上的实体的修改版本。如果请求URI没有指向现有资源,并且该URI能够被请求的用户代理定义为新资源,则源服务器可以使用该URI创建资源。 修补程序定义在RFC 5789: 补丁方法请求

  • 我不知道PATCH和PUT方法之间的确切区别。有人能告诉我什么时候我们应该用适当的例子来使用这个方法吗?