Spring Data REST 是否支持 JPA @Version?

2024-02-26

我可以使用JPA吗@Version使用 Spring Data REST?

在 Spring Data REST 1.1.0.M1 中,我可以配置存储库导出器来公开实体 ID,碰巧它也会公开@Version- 带注释的字段。所以我想如果我尝试PUT具有旧版本号的实体,我会得到OptimisticLockException。但这种情况并没有发生。相反,PUT成功(包括数据更新),只不过版本号始终严格递增,而不是我设置的任何旧版本。

I read here https://stackoverflow.com/questions/2572566/java-jpa-version-annotation我不应该自己设置版本号,因为行为未定义。这就说得通了。但这似乎使得@Version在我拥有的只是实体的 JSON 表示而不是对实体的引用的情况下,这是无用的:使用 JSON 表示,我需要将版本号发送回服务,该服务最终会调用setVersion(),这又会导致未定义的行为。

我对情况的理解正确吗?我可以用吗@Version使用 Spring Data REST?

UPDATE:鉴于 Marten 的回应,我最终使用 JPA 事件来实现乐观锁定功能。我在这里写下了该方法:

http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/ http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/


我想说不,这与 Spring Data REST 的使用没有太大关系。您已经提到您无法自己设置版本,因为随后发生的事情是未定义的(我自己也有过这种愉快的经历)。在发布普通表单数据并且不在会话中存储当前版本时,您基本上遇到了相同的问题(@SessionAttributes).

我们最终要做的是编写一个休眠拦截器(我猜现在将是一个侦听器)来执行检查(以便我们可以实际设置版本字段)。这工作起来没有太多问题(但那是大约 6 年前的事了),所以 Hibernate 可能已经改变并且现在的行为可能有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data REST 是否支持 JPA @Version? 的相关文章

随机推荐