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

有没有办法配置或覆盖 JPA @Version 注释以使用字符串(UUID)?


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


int version


@Version

Public Integer getVersion ()

    return version;

...

我们需要考虑使用 GUID 进行版本控制(目前在 Postgres 数据库中作为一个变化 100 的字符保存)。


老实说,我的示例在不久前就开始工作了,还没有深入研究。我的第一次尝试是在黑暗中充满希望的一枪 -


String version


@Version @GeneraedValue(generator="system-uuid")

Public String getVersion ()

    return version;

...

基本上我认为这是您将 UUID 用于主键的方式。我想如果这行得通,他们会记录下来的!


我敢肯定我听说过这是可能的,尽管我最初的谷歌搜索没有提出任何建议,所以我想我会问是否有人以前做过这个,或者可以指出我粗略的方法(我'我假设它会比我的简单尝试更深一些)?


阿晨1998
浏览 144回答 1
1回答

慕妹3242003

不,JPA 规范不允许这样做。基于时间或基于数字。而且你肯定永远不会有一个生成策略,因为那是针对 PK 的,因为版本是由 JPA 提供者直接分配的。来自 javadoc@Version版本属性支持以下类型:int、Integer、short、Short、long、Long、java.sql.Timestamp。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java