SpringDataREST是否支持JPA@Version?

SpringDataREST是否支持JPA@Version?,spring,jpa,spring-data-rest,Spring,Jpa,Spring Data Rest,我可以将JPA@Version与Spring数据REST一起使用吗 在SpringDataREST1.1.0.M1中,我可以配置RepoExporter来公开实体ID,它也会公开@Version-注释字段。所以我想,如果我尝试放置一个带有一些旧版本号的实体,我会得到OptimisticLockException。但这并没有发生。相反,PUT成功(包括数据更新),只是版本号始终严格递增,而不是我设置的任何旧版本 我读到我不应该自己设置版本号,因为行为是未定义的。这是有道理的。但这似乎使得@Vers

我可以将JPA
@Version
与Spring数据REST一起使用吗

在SpringDataREST1.1.0.M1中,我可以配置RepoExporter来公开实体ID,它也会公开
@Version
-注释字段。所以我想,如果我尝试
放置一个带有一些旧版本号的实体,我会得到
OptimisticLockException
。但这并没有发生。相反,
PUT
成功(包括数据更新),只是版本号始终严格递增,而不是我设置的任何旧版本

我读到我不应该自己设置版本号,因为行为是未定义的。这是有道理的。但这似乎使得
@Version
在我只有实体的JSON表示而没有实体引用的情况下变得毫无用处:使用JSON表示,我需要将版本号发送回服务,服务最终会调用
setVersion()
,这反过来会导致未定义的行为

我对情况的理解正确吗?我可以将
@Version
与Spring数据REST一起使用吗

更新:考虑到Marten的反应,我最终使用JPA事件来实现乐观锁定功能。我在这里写下了方法:


我会说不,这与使用Spring数据REST没有多大关系。你已经提到你不能自己设置版本,因为那时发生的事情是未定义的(我自己也有过这种愉快的经历)。在发布普通表单数据而不在会话中存储当前版本时,基本上存在相同的问题(
@SessionAttributes


我们最终做的是编写了一个hibernate拦截器(我想现在应该是一个侦听器)来进行检查(这样我们就可以实际设置version字段)。这样做没有太多问题(但那是大约6年前),所以Hibernate可能已经改变了,现在的行为可能会有所不同

谢谢Marten。我使用SDR事件机制做了类似的事情(基本上在保存之前进行冲突检查),但我认为最好按照您建议的方式将其推回到数据库附近。我建议您在springsource jira上创建一个增强请求,也许他们可以添加一些现成的内容(或可配置的)。我可以看出这是一个常见的用例。link不起作用(