【发布时间】:2013-09-17 19:19:35
【问题描述】:
我可以将 JPA @Version 与 Spring Data REST 一起使用吗?
在 Spring Data REST 1.1.0.M1 中,我可以配置 repo 导出器以公开实体 ID,碰巧这也会公开 @Version-annotated 字段。所以我想如果我尝试PUT 一个具有旧版本号的实体,我会得到OptimisticLockException。但这不会发生。相反,PUT 成功(包括数据更新),只是版本号始终严格递增,而不是我设置的任何旧版本。
我读到here 我不应该自己设置版本号,因为行为是未定义的。这就说得通了。但似乎这使得@Version 在我所拥有的只是实体的 JSON 表示而不是对实体的引用的情况下变得无用:使用 JSON 表示,我需要将版本号发送回服务,最终会调用setVersion(),这又会导致未定义的行为。
我是否正确理解了情况?我可以将 @Version 与 Spring Data REST 一起使用吗?
更新:鉴于 Marten 的响应,我最终使用 JPA 事件来实现乐观锁定功能。我在这里写了方法:
http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/
【问题讨论】:
-
链接失效(
标签: spring jpa spring-data-rest