当前位置: 首页 > 知识库问答 >
问题:

如何使用JPA为非主键自动生成UUID值

隆飞宇
2023-03-14

我有Spring Boot应用程序,我使用JPA层与PostgreSQL交谈。我有一个类型UUID的非主键,我想在调用保存方法时自动生成。我用@GeneratedValue注释了属性,但插入时列值为空。

@Column(name = "USER_UUID")
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID userUuid;

我还创建了列:

ADD COLUMN IF NOT EXISTS user_uuid uuid UNIQUE DEFAULT uuid_generate_v4();

在这种情况下如何自动生成非主要UUID值?

共有1个答案

蒯安平
2023-03-14

您可以使用JPA回调。

 @PrePersist
    protected void onCreate() {
        setUserUuid(java.util.UUID.randomUUID());
    }
 类似资料:
  • 问题内容: 我的主键实体如下所示 当我跑步时,出现错误 无法获取或更新下一个值;嵌套的异常是org.hibernate.exception.SQLGrammerException:无法获取或更新下一个值 但是当我改变为 没有错误抛出。我想在 oracle db 上为每个表生成唯一的主键。 问题答案: 当将新创建的实体插入数据库时,告诉JPA提供者使用表从中获取ID。 当使用Hibernate作为提

  • 我正在使用mySQL数据库,该表有一个由数据库引擎生成的UUID格式的主键。我使用Spring framework JdbcTemplate(https://docs.Spring.io/Spring/docs/current/javadoc-api/index.html?org/springframework/jdbc/core/JdbcTemplate.html)来执行所有操作。但是在插入时,

  • 我想创建一个复合主键,其中一个字段是自动生成的(JPA)。我能这么做吗?有没有可能从spring环境中得到一个生成器? null

  • 本文向大家介绍如何获取自动生成的(主)键值?相关面试题,主要包含被问及如何获取自动生成的(主)键值?时的应答技巧和注意事项,需要的朋友参考一下 insert 方法总是返回一个 int 值 ,这个值代表的是插入的行数。 如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入 的参数对象中。 示例:

  • 问题内容: 我正在尝试实现的是生成一个UUID,该UUID在数据库插入期间会自动分配。与名为“ id”的主键列相似,生成一个id值。 模型值看起来像这样: 但是当数据库插入完成时。“ uuid”为空。 非常感谢您的帮助。如果我问一个明显的愚蠢问题,对不起。 问题答案: 您可以使用诸如@PrePersist之类的事件来填充UUID字段 https://docs.jboss.org/hibernate

  • 我知道这似乎已经讨论过了,答案是肯定的,可以为不同的字符串生成相同的值,但不太可能(Java的hashCode可以为不同的字符串生成相同的值吗?)。然而,它确实发生在我的应用程序中。 以下代码将生成相同的hashcode:-347019262(jave 1.7.25) 在这种情况下,我确实需要hashcode,我希望使用它为字符串生成唯一的主键。看来我做得不对。有什么建议吗? 多谢!