jpa:在db中保存后找不到实体

hof1towb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(405)

我在spring boot应用程序中编写了一个函数,如下所示:

@Component
public class AspectHelper {

private final MyRepository myRepository;

public AspectHelper(
      MyRepository myRepository) {
   this.myRepository = myRepository;
}

@Async
public void save(MyEntity entity) {
  try {
    myRepository.save(entity);
    Optional<MyEntity> savedEntityOpt = myRepository.findById(entity.id);
    ...
  } catch (Exception e) {
    log.error("Error occurred while saving", e);
  }
}

}

上面的函数是从流中不在任何事务中的另一个bean调用的。
问题是,在db中保存实体后,我能够立即获得有效的实体id,而在尝试获取相同的实体时,我得到的是准确保存的实体。
但在检查数据库时,我找不到实体。
我不知道为什么会这样。有人能帮忙吗?

t40tm48m

t40tm48m1#

我打赌您使用的是可重复读取隔离级别,这是mysql的默认级别。在这种情况下,您必须了解,连接将只看到在事务开始之前提交的数据。尝试在sql编辑器中使用“自动提交”和/或切换为“读取已提交”

相关问题