问题描述
我想用@PostPersist
方法更新实体,以获取生成的ID并将其放在同一表的另一列中:
@PostPersist
public void postPersist(Customer customer) {
customer.setCode("Code_" + customer.getId);
}
此更新未持久存储在数据库中。因此,我应该使用附加到生成的ID上的字符串“ Code_”来更新实体。
解决方法
@PostPersit
和@PrePersist
是回调方法。它们在JPA事务之后执行。
就您而言,您可以:
- 在
code
方法之后手动设置persist
,并使用此code
再次请求保存客户 - 您可以保留
@PostPersist
批注,但在这种情况下,您还需要另一个保存请求 - 如果您使用的是
custom generator
,则可以在保存(How do I know the id before saving an object in jpa)之前获得id