在 PostPersist 事件方法中更新 JPA 实体

Update the JPA entity in PostPersist event method

我想更新 @PostPersist 方法中的实体,以便获取生成的 ID 并将其放在同一 table 的另一列中:

@PostPersist
public void postPersist(Customer customer) {
   customer.setCode("Code_" + customer.getId);
}

此更新未保存在数据库中。那么我应该如何使用附加到生成的 Id 的字符串“Code_”来更新我的实体。

@PostPersit@PrePersist是回调方法。它们在 JPA 事务之后执行。 在您的情况下,您可以:

  1. persist 方法之后手动设置 code 并使用此 code
  2. 再次请求保存客户
  3. 你可以留下@PostPersist注释,但在这种情况下你还需要另一个保存请求
  4. 如果您正在使用 custom generator,您可以在保存前获得 id (How do I know the id before saving an object in jpa)

Code example