如何在 micronaut 中使方法具有事务性

How to make a method transactional in micronaut

我在我的应用程序和服务中使用带有 sqlite 数据库的 micronaut class 方法如下所示:-

   private void loadListIntoDb(Stream<EmpDto> lines) {
       try {
            empRepository.deleteAll();
            lines.forEach(empRepository::saveEmpList);
        } catch (Exception ex) {
            throw new RuntimeException("error while loading file into db", ex);
        }
    }

我想要的是,如果saveEmpList失败,所有被deleteAll方法删除的数据也应该被恢复。

我试过这样进行测试,但它没有回滚已删除的项目:

   @Transactional
   private void loadListIntoDb(Stream<EmpDto> lines) {
       try {
            empRepository.deleteAll();
            throw new Exception("test exception");
        } catch (Exception ex) {
            throw new RuntimeException("error while loading file into db", ex);
        }
    }

有没有我遗漏的东西。

此致,

终于解决了。我们无法在 Micronaut 中使私有方法具有事务性。我们需要将方法设为 public.