您是否可以将JPA配置为在乐观并发中将UUID用于@Version

时间:2019-01-23 18:01:26

标签: java jpa optimistic-concurrency

是否可以配置或覆盖JPA @Version注释以使用字符串(UUID)?

根据示例,我有一个使用int进行乐观并发的简单示例

int version

@Version
Public Integer getVersion ()
    return version;
...

我们需要考虑使用GUID进行版本控制(目前在Postgres db中以100字符变化)。

老实说,不久前我的示例就已经开始工作了,还没有花太多时间。我的第一次尝试是在黑暗中拍摄出一些希望-

String version

@Version @GeneraedValue(generator="system-uuid")
Public String getVersion ()
    return version;
...

基本上,我认为这是将UUID用于主键的方式。我想这是否行得通,他们会对此进行记录!

虽然我最初的谷歌搜索什么都没想,但我敢肯定我已经听说过,所以我想我想问问是否有人曾经这样做过,或者可以指出我的粗略做法(我认为这比我的简单尝试要深一些)?

1 个答案:

答案 0 :(得分:0)

不,JPA规范不允许这样做。基于时间或基于数字。而且您肯定永远不会有一个生成策略,因为它是针对PK的,并且版本是由JPA提供程序直接分配的。

来自@Version的Javadoc

  

版本属性支持以下类型:int,   整数,短整数,短整数,长整数,长整数,java.sql.Timestamp。