如何使用Hibernate作为字段的UUID?

Flo*_*art 17 java uuid hibernate

我正在尝试使用没有@Id注释的生成的UUID,因为我的主键是其他东西.该应用程序不会生成UUID,您有什么想法吗?

这是我的声明:

@Column(name = "APP_UUID", unique = true)
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
private String uuid;
Run Code Online (Sandbox Code Playgroud)

我正在使用Hibernate 4.3.0和Oracle10g.

Tob*_*fke 8

检查Javadoc GeneratedValue:

提供主键值的生成策略的规范.

换句话说 - 仅使用注释来初始化'无ID'属性是不可能的.

但你可以使用@PrePersist:

@PrePersist
public void initializeUUID() {
    if (uuid == null) {
        uuid = UUID.randomUUID().toString();
    }
}
Run Code Online (Sandbox Code Playgroud)


Eng*_*eer 7

试试这可能有所帮助

@Id
@GeneratedValue(generator = "hibernate-uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true)
private String uuid;
Run Code Online (Sandbox Code Playgroud)

阅读此链接阅读hibernate文件是可能的

  • @Engineer - 您应该为答案添加更多解释.链接可能会过时.引用来源绝对合适,但您应该提供适当的完整响应. (2认同)
  • 不能在没有@Id注释的情况下生成它.我不希望我的专栏成为主键. (2认同)
  • 这并不能回答问题。 (2认同)