首页 > 解决方案 > Spring + Hibernate:在更新条目时从存储库中选择

问题描述

我刚刚遇到了一个问题,我试图使用它的 id 从数据库中选择 (repo.findById(id)) 一个对象,同时它正在被更新(Hibernate 在 PreUpdateEventListener 和 PostUpdateEventListener 接口中的 onPreUpdate 和 onPostUpdate 方法),但它为我抛出了 NullPointerException。

如果我这样解释可能会更容易:

我有一个状态为“PENDING”的对象,如果它被更改为“CONFIRMED”,我想通过执行以下操作检查 onPreUpdate 方法中的先前状态:

@Override
public boolean onPreUpdate(PreUpdateEvent preUpdateEvent)
{
    final Object entity = preUpdateEvent.getEntity();

    if (entity instanceof Status)
    {
        Status status = (Status) entity;
        //Method below throws NullPointerException
        Status statusFromRepo = statusRepo.findByStatusId(status.getStatusId());
    }

    return false;
}

但是由于 statusRepo 已经在数据库中更新这个对象,我不能在更新之前做任何事情来获取对象吗?PreUpdateEvent 包含将要保存在数据库中的已“更新”版本。

标签: springhibernate

解决方案


推荐阅读