gpt4 book ai didi

java - JPA @version - 可以用来计算表条目的版本

转载 作者:行者123 更新时间:2023-12-01 05:56:13 27 4
gpt4 key购买 nike

请考虑下表(使用相应实体创建)

request
-------
id requestor type version items
1 a t1 1 5
2 a t1 2 3
3 b t1 1 2
4 a t2 1 4
5 a t1 3 9

以上就是我想要实现的目标。版本字段是计算字段,其他字段是用户提供的。基本上,请求的版本需要根据请求者和类型的组合来计算。给定组合第一次出现时将具有版本 1,然后是版本 2,依此类推。

我在仅包含三列的不同实体上使用 @version 尝试了各种操作,并使用 ManytoOne 等连接两个实体,但我无法获得所需的结果。我不想让你对我尝试过的事情感到困惑。

既然目标很简单,我想应该有一个更简单的方法吧?你能帮忙吗? - 非常感谢任何帮助!

提前致谢

最佳答案

Version 注解用于指定实体类的版本字段或属性,作为其乐观锁值。我认为这与您要寻找的内容没有任何关系。不过,这里有一些想法:

  1. 在插入时使用触发器。
  2. 使用 SQL View 。
  3. 对派生属性使用特定于提供程序的扩展,例如 Hibernate 的 @Formula (此注释允许您将属性映射到 SQL 表达式而不是表列)。

为了说明最新的选项,您可以声明如下内容:

@Formula("(select count(r.id)+1 from Request r where r.requestor=requestor and r.type=type and r.id<id)")
public long getVersion() { return version; }

关于java - JPA @version - 可以用来计算表条目的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com