我可以将 JPA@Version
与 Spring Data REST 一起使用吗?
在 Spring Data REST 1.1.0.M1 中,我可以配置 repo 导出器以公开实体 ID,碰巧它也会公开@Version
-annotated 字段。所以我想如果我尝试PUT
使用一些旧版本号的实体,我会得到OptimisticLockException
. 但这不会发生。相反,PUT
成功(包括数据更新),除了版本号总是严格递增而不是我设置的任何旧版本。
我在这里读到我不应该自己设置版本号,因为行为是未定义的。那讲得通。但是,在我所拥有的只是实体的 JSON 表示而不是对实体的引用的情况下,这似乎@Version
毫无用处:使用 JSON 表示,我需要将版本号发送回服务,这最终会call setVersion()
,这反过来会导致未定义的行为。
我是否正确理解了情况?我可以@Version
与 Spring Data REST 一起使用吗?
更新:鉴于 Marten 的响应,我最终使用 JPA 事件来实现乐观锁定功能。我在这里写了方法:
http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/