在spring boot annotate中使用@Transactional从控制器调用update(),此update()调用update2()。所以,当我尝试使用update2()将重复值保存到数据库中时,它不会向update()抛出异常,而是转到控制器方法。我想在update()中处理异常。
@Transactional(rollbackFor = Exception.class)
public String update()
{
try
{
return update2();
}
catch (Exception e) {
return "Exception in update()";
}
}
public String update2() throws Exception
{
List<Employee> l = repo.findAll();
for(int i=0 ; i<2 ; i++)
{
if(i==0)
l.get(i).setUsername("duplicate_value");
else
l.get(i).setUsername("unique_value");
repo.save(l.get(i));
}
return "success";
}
正如Hadi Moloodi在评论中提到的,您的@Transactional
注释是使您的Exception
不可捕捉的原因。
您可以尝试将事务注释移动到您的update2方法,如下所示:
public String update() {
try {
return update2();
} catch (Exception e) {
return "Exception in update()";
}
}
@Transactional(rollbackFor = Exception.class)
public String update2() throws Exception {
List<Employee> l = repo.findAll();
for(int i=0 ; i<2 ; i++) {
if(i==0) {
l.get(i).setUsername("duplicate_value");
} else {
l.get(i).setUsername("unique_value");
}
repo.save(l.get(i));
}
return "success";
}
问题内容: 美好的一天。如下代码: 据我了解,如果方法中存在异常,则不会回滚事务。以及如何使它滚动?并返回SomeResult 问题答案: 您不应该以编程方式调用回滚。根据docs的建议,最好的方法是使用声明性方法。为此,您需要注释哪些异常将触发回滚。 在你的情况下,像这样 看一下@Transaction API 和有关回滚事务的文档。 如果尽管有文档建议,但仍要进行程序化回滚,则需要按照已建议的
问题内容: 我在Service类中看到了一种被标记为的方法,但是它也在同一类中调用了其他未标为的方法。 这是否意味着对单独方法的调用导致应用程序打开与DB的单独连接或暂停父事务等? 不带任何注释的方法的默认行为是什么,而另一个带有注释的方法调用该方法的默认行为是什么? 问题答案: 当你调用没有事务块之内的方法时,父事务将继续使用新方法。它将使用与父方法(with )相同的连接,以及在调用的方法中导
我使用Spring AOP拦截方法执行。 我有一个界面,如下所示: 以下是接口的实现: 现在我希望任何使用@AwesomeAnnoting注释的参数的方法都应该被Spring AOP捕获。 所以我写了以下方面,这是有效的。 但是,当我尝试查找参数注释时,我没有得到任何注释。如上所述,annotationMatrix为空。 所以我的问题是: 为什么annotationMatrix为空?可能是因为参数
我正在使用带有webflux的spring boot 2.4.2连接到postgres数据库。我在使用事务性代码时观察到了一个我不理解的行为。 为了展示这种行为,我创建了一个示例应用程序,试图将行添加到两个表中;表“a”和表“b”。对表“a”的插入预计将失败,并出现重复密钥冲突。考虑到使用了事务性,我希望不会向表“b”中添加任何行。 然而,根据我用哪个方法注释事务,我会得到不同的结果。 如果我对c
我正在测试一个Spring重试,但似乎没有调用恢复。试图让它工作,但似乎详尽无遗。我传递给@recover no argument,Throwable,exception。改变了重试依赖的版本,似乎它包含在spring boot的aop中,并删除了它。Creading Geting Recovery没有被调用,出现以下异常Messege。 请求处理失败;嵌套异常是org.springframewo