【发布时间】: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())。如果这没有发生,那么您的代码可能没有按照预期执行。