代码之家  ›  专栏  ›  技术社区  ›  OpenSource

jpa@version-它可以用来计算表项的版本吗?

  •  1
  • OpenSource  · 技术社区  · 15 年前

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

    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等连接了两个实体,但我无法达到预期的结果。我不想把你和我试过的东西混淆。

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

    提前谢谢

    1 回复  |  直到 15 年前
        1
  •  0
  •   Pascal Thivent    15 年前

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

    1. 插入时使用触发器。
    2. 使用SQL视图。
    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; }