如何在删除 @PreRemove 注释方法内更新我的实体?

问题描述 投票:0回答:1

我想在删除实体之前更新我的实体(因为数据库触发器稍后将使用该值)。

所以我在我的 EntityListener 中尝试了这个:

    @PreRemove
    void onRemove(Object entity) {
        CurrentUser currentUser = CDI.current().select(CurrentUser.class).get();
        if (currentUser != null && entity instanceof BaseEntity) {
            BaseEntity baseEntity = (BaseEntity) entity;
            baseEntity.deletedBy = currentUser.userId;
            baseEntity.persistAndFlush();
        }
    }

但是,在删除之前,更改不会持久保存到数据库 - 可能是因为删除事务已经启动。

我怎样才能实现这个目标?

hibernate jpa quarkus-panache
1个回答
0
投票

您可以尝试进行此更改。但希望你能解决它。自从你很久以前发帖以来。

@PersistenceContext
private EntityManager entityManager;

@PreRemove
@Transactional
public void onRemove(Object entity) {
    CurrentUser currentUser = CDI.current().select(CurrentUser.class).get();
    if (currentUser != null && entity instanceof BaseEntity) {
        BaseEntity baseEntity = (BaseEntity) entity;
        baseEntity.setDeletedBy(currentUser.getUserId());

        // Other actions
        // Persist the changes to the entity before removal
        entityManager.merge(baseEntity);
        entityManager.flush(); // Ensure changes are flushed to the database
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.