Database 使用spring数据rest同时修补资源

Database 使用spring数据rest同时修补资源,database,spring-data-jpa,spring-data-rest,Database,Spring Data Jpa,Spring Data Rest,我有一个实体,它使用SpringDataRESTAPI作为补丁 Customer { Long id; String primaryValue; String secondaryValue; } 在微服务体系结构中,其他服务调用spring data rest api补丁调用来更新两个不同请求中的primaryValue和secondaryValue,这些请求可以同时发生 Request1: api/url PATCH { "id":1, "p

我有一个实体,它使用SpringDataRESTAPI作为补丁

Customer {
   Long id;
   String primaryValue;
   String secondaryValue;
}
在微服务体系结构中,其他服务调用spring data rest api补丁调用来更新两个不同请求中的primaryValue和secondaryValue,这些请求可以同时发生

Request1: 
api/url PATCH
{
"id":1,
"primaryValue": "value1"
}

Request2: 
api/url PATCH
{
"id":1,
"secondaryValue": "value2"
}

数据库状态缺少这些值中的一个,即使进行了更新,使每个值都有一个值。虽然数据库单独执行事务,但数据在执行修补程序之前先执行get,当两个事务同时发生时,数据将以错误状态结束。我正在尝试解决这个问题,并寻找解决方法

我在这里看到了一些选项:

  • 使用乐观锁并在失败时抛出异常;在客户端上,如果收到异常,请重试
  • 如果可能,请使用数据库锁
  • 同步发送请求
  • 如果修补程序端点总是齐头并进,则将它们合并为一个端点(如果在其他地方使用这两个端点,则可以创建第三个端点来支持这两个端点)

  • 我不确定是否有一种Hibernate方法可以自动解决这个问题,它可能会帮助您使用锁。

    谢谢我使用@Version的乐观锁机制来实现这一点。