Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Quarkus Panache Hibernate:如何清除缓存,使实体世界与数据库状态匹配?_Java_Hibernate_Caching_Quarkus - Fatal编程技术网

Java Quarkus Panache Hibernate:如何清除缓存,使实体世界与数据库状态匹配?

Java Quarkus Panache Hibernate:如何清除缓存,使实体世界与数据库状态匹配?,java,hibernate,caching,quarkus,Java,Hibernate,Caching,Quarkus,我是quarkus新手,似乎在单元测试中对hibernate的缓存有问题。 测试已注入“UserTransaction”。 测试应检查数据库清理任务 这就是我要做的: 创建实体 启动交易 使用“persistAndFlush”按“活动记录”模式保存实体 提交事务 尝试通过“查找(id)”从数据库中获取实体,以确保已保存该实体 运行清理任务(从数据库中删除实体) 再次尝试通过“查找(id)”从数据库中获取实体,以确保该实体已被删除 步骤7失败,因为“find(id)”返回实体,尽管它不再在数据库中

我是quarkus新手,似乎在单元测试中对hibernate的缓存有问题。 测试已注入“UserTransaction”。 测试应检查数据库清理任务

这就是我要做的:

  • 创建实体
  • 启动交易
  • 使用“persistAndFlush”按“活动记录”模式保存实体
  • 提交事务
  • 尝试通过“查找(id)”从数据库中获取实体,以确保已保存该实体
  • 运行清理任务(从数据库中删除实体)
  • 再次尝试通过“查找(id)”从数据库中获取实体,以确保该实体已被删除
  • 步骤7失败,因为“find(id)”返回实体,尽管它不再在数据库中

    如果跳过步骤5,则不会发生这种情况!所以这对我来说似乎是个问题

    我尝试注入'Session'、'SessionFactory'和'EntitiyManager'以获得对当前Hibernate会话的访问,但如果成功,则没有

    也许整个方法缺少我没有得到的东西? 如何在像我这样的设置中使实体世界与数据库匹配

    欢迎任何提示和想法


    TIA

    该问题有一个简单的解决方案,将事务添加到上次查找操作:

    transaction.begin();
    doc = Document.findById(uuid);
    transaction.commit();
    

    你能给我们看看你的代码吗?问题已经更新了。对我也有用。我担心当前Quarkus版本1.10.x中会有这种需求。甚至尝试通过EntityManager退出缓存。非常感谢你的回答!
    transaction.begin();
    doc = Document.findById(uuid);
    transaction.commit();