如何将 UUID 与 Hibernate 结合使用作为字段?

2022-09-02 22:02:31

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

这是我的声明:

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

我正在使用Hibernate 4.3.0和Oracle10g。


答案 1

检查以下各项的 Javadoc:GeneratedValue

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

换句话说 - 仅通过注释无法初始化“none ID”属性。

但是您可以使用:@PrePersist

@PrePersist
public void initializeUUID() {
    if (uuid == null) {
        uuid = UUID.randomUUID().toString();
    }
}

答案 2

试试这个,它可能会有所帮助

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

阅读此链接 阅读休眠文档 这是可能的