gpt4 book ai didi

java - 即使我执行了 try catch,Spring Data 中的 rollbackFor 属性也会起作用吗?

转载 作者:行者123 更新时间:2023-12-01 16:29:53 24 4
gpt4 key购买 nike

我在使用 JPA 时阅读了有关 rollbackFor 属性的内容。

现在我的代码是这样的

@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void newUser(User user) {
try{
userRepository.saveAndFlush(user);
}catch(Exception e){
//log exception
}
return;
}

据我所知,rollbackFor 将在捕获异常时起作用...这是正确的方法吗?或者 try catch 不应该在那里?

谢谢。

最佳答案

Transactional Annotation rollbackFor: Defines zero (0) or more exception classes, which must be subclasses of Throwable, indicating which exception types must cause a transaction rollback.

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html#rollbackFor--

此外,我们不应该在事务方法中抑制/吃掉异常,而是需要从方法中抛出异常以回滚数据库事务:

请在下面找到正确的实现:

     @Transactional(readOnly = false, 
propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void newUser(User user) throws Exception {
try{
userRepository.saveAndFlush(user);
} catch(Exception e){
throw new Exception("Unable to Save User Object ",e);
}
}

您还可以引用以下链接来处理事务注释的异常:

Best practices for rolling back transactions in Spring 3/Hibernate

关于java - 即使我执行了 try catch,Spring Data 中的 rollbackFor 属性也会起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com