如何在 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.
我在我的应用程序和服务中使用带有 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.