我查看了代码并注意到org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module。$ AssociationOmittingSerializerModifier.updateBuilder只是跳过了version属性。
对于项目资源,ETag标题中提供了版本字段。 但是对于集合资源,我们需要项目的版本ID以在更新项目时遵循乐观锁定。
我们如何获取集合资源上每个项目的版本ID?我们是否有任何配置来启用此功能?
感谢您的帮助
答案 0 :(得分:1)
当返回集合资源并且您想要更新集合中的单个项目时,访问该版本尤其方便。
我在实体类中添加了或者命名'getter',它将返回版本:
@Version
private long version;
public long getCurrentVersion()
{
return version;
}
这会导致序列化程序在返回的JSON中创建currentVersion
键,然后将其值作为If-Match
标题的值传递。
答案 1 :(得分:0)
你必须手动完成。为了我的目的,这工作正常,因为我在更新之前无论如何加载现有实体,然后从REST实体复制属性。
if (restEntity.version != null && restEntity.version != existing.version) {
throw new OptimisticLockingFailureException("version number from REST doesn't match the database")
}