当前位置: 首页 > 知识库问答 >
问题:

spring jpa@transaction不回滚

姬康平
2023-03-14

我的项目遇到了Spring JPA事务无法回滚的问题。项目框架为spring MVC+spring+spring data JPA+Oracle。我在网上搜索了很多信息,但仍然不能解决我的问题。

我尝试了许多方法,例如将方法设置为public或在@transactional中添加rollbackfor=exception.class,但仍然无法解决这个问题。

这是我的代码

控制器

@RequestMapping(value = {"addUser"}, method = RequestMethod.GET)
    @ResponseBody
    public Boolean insertUser() throws Exception{
        User user = new User();
        user.setId(10);
        userServiceI.addUser(user);
        return true;
    }

服务

public interface UserServiceI {
    void addUser(User user);
}
@Service
public class UserService implements UserServiceI {

    @Autowired
    public UserDao userDao;

    @Autowired
    PersonService personService;

    @Override
    @Transactional(propagation= Propagation.REQUIRED,rollbackFor=Exception.class)
    public void addUser(User user){
        User user1 = userDao.saveAndFlush(user);
        System.out.println(1/0);
    }
}

public interface UserDao extends JpaRepository<User,Integer> {
}

我的@transactional方法加载我的实现类服务,它编写一个容易出错的1/0。我期望事务在出错后回滚,但它没有。

共有1个答案

洪飞驰
2023-03-14

如果在springboot项目上下文中,必须在配置类中添加@EnableTransActionManagement

如果它是非springboot项目,则在xml配置文件(声明为您的组件扫描)中添加注释驱动的标记

 类似资料:
  • 问题内容: 我想知道使用代替 使用 据我了解,即使发生了某些非常糟糕的事件,捕获也会帮助我们正确地进行行为。还是没有帮助? 问题答案: 据我了解,即使发生某些非常糟糕的事件,捕获错误也会帮助我们正确地执行操作。还是没有帮助? 你不需要显式指定,因为默认情况下,如果发生交易,spring会默认回滚事务。 请参见12.5.3回滚声明式事务 在默认配置中,Spring框架的事务基础结构代码仅在运行时,未

  • 我开始制作一个简单的spring boot应用程序。 我的第一步是利用Spring JDBC支持,使用默认的H2内存数据库。对于示例数据,我在src/main/resources中有schema.sql和data.sql。 所以当spring启动时,它也会执行这两个脚本并填充H2数据库,我可以通过H2控制台访问它。

  • Spring Transactions Spring最可爱的地方之一就是AOP事务控制了,不多说。在SpringSide里,事务坐在Service层,而且因为Service层的方法里,只读的事务居多,因此在Class Level上默认设置@Transactional(readOnly = true),而在save,delete方法再注释@Transactional(readOnly = false

  • 我很难理解如何决定使用Spring@Transaction注释什么方法。 在一次转账中,如果扣款失败,显然即使存款没有失败,也不应该继续存款。 在这五种方法(转移、扣除、存款、加载、保存)中,哪些方法应该用@transactional注释,为什么?

  • 定义用于发送事务和内联消息的API Transaction C API 定义用于发送事务的API Transaction CPP API 类型安全的Trasaction C API的C++封装 详细描述 A EOS.IO事务具有以下抽象结构: struct transaction { Name scope[]; Name readScope[]; message messages[