Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么SpringDataREST在序列化实体时忽略@javax.persistence.Version字段?_Java_Spring_Spring Data_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

为什么SpringDataREST在序列化实体时忽略@javax.persistence.Version字段?

为什么SpringDataREST在序列化实体时忽略@javax.persistence.Version字段?,java,spring,spring-data,spring-data-jpa,spring-data-rest,Java,Spring,Spring Data,Spring Data Jpa,Spring Data Rest,我查看了代码,发现org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module.$AssociationMittingSerializerModifier.updateBuilder只是跳过了version属性 对于项目资源,版本字段在ETag标头中可用。 但是对于集合资源,我们需要项的版本id来在更新项时执行乐观锁定 如何获取集合资源中每个项目的版本id?我们是否有任何配置来启用此功能 感谢您的帮助您必须手动操

我查看了代码,发现org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module.$AssociationMittingSerializerModifier.updateBuilder只是跳过了version属性

对于项目资源,版本字段在ETag标头中可用。 但是对于集合资源,我们需要项的版本id来在更新项时执行乐观锁定

如何获取集合资源中每个项目的版本id?我们是否有任何配置来启用此功能


感谢您的帮助

您必须手动操作。出于我的目的,这很好,因为我在更新之前加载现有实体,然后从REST实体复制属性

    if (restEntity.version != null && restEntity.version != existing.version) {
        throw new OptimisticLockingFailureException("version number from REST doesn't match the database")
    }

当返回集合资源并希望更新集合中的单个项时,访问该版本尤其方便

我在entity类中添加了一个名为“getter”的,它将返回版本:

@Version
private long version;

public long getCurrentVersion()
{
  return version;
}

这会导致序列化程序在返回的JSON中创建一个
currentVersion
键,然后我将其值作为
If Match
头的值传递。

看看,它可以帮助您。无论如何,如果您提供一些示例代码,例如您所涉及的实体、您得到的结果和您想要的结果,我们可以详细说明一些具体的解决方案。您是否找到了正确的方法?不幸的是,没有(