【问题标题】:Update the JPA entity in PostPersist event method在 PostPersist 事件方法中更新 JPA 实体
【发布时间】:2020-10-22 17:57:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: java jpa persistence


    【解决方案1】:

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

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

    Code example

    【讨论】:

    • 我会选择第三个,非常感谢@Volodya
    猜你喜欢
    • 2018-08-23
    • 2011-06-21
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多