【问题标题】:Get identity value before saving in JPA在 JPA 中保存之前获取身份值
【发布时间】:2015-06-17 09:33:19
【问题描述】:

我有一个带有自动生成主键的数据库。对应的JPA条目如下:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(unique=true, nullable=false)
@JsonProperty("item_id")
private Long id;

现在,我有另一个字符串字段,我需要在将其插入数据库之前将其附加到该字段。是否可以在将值插入数据库之前获取标识值?我在一些帖子上看到我可以刷新实体。但我不确定这是否适用于我的场景。我是 JPA 的新手,所以我不知道刷新的效果。

谢谢。

【问题讨论】:

  • 我认为你不能,因为每个 DBMS 都有自己的策略来生成唯一的 ID。您可以做的是 [1] 首先创建对象,然后根据同一事务中生成的 id 更新值或 [2] 在应用程序中生成唯一 ID,使用类似 UUID
  • 保证在刷新时生成一个 id (EntityManager#flush())。如果这没有发生,那么您的代码可能没有按照预期执行。

标签: java jpa


【解决方案1】:

我不认为你可以。生成的密钥作为执行 INSERT 操作的语句的一部分从数据库返回。甚至生成的密钥的检索也是特定于实现的,并且不能保证在每个存储上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2012-11-16
    • 2016-12-26
    • 2018-11-11
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多