首页 > 解决方案 > spring jpa @transaction 不回滚

问题描述

我的项目遇到了Spring JPA事务不会回滚的问题。项目框架为spring MVC + Spring + spring data JPA + oracle。我在互联网上搜索了很多资料,但仍然无法解决我的问题。

尝试了很多方法,比如设置方法为 public 或者添加rollbackFor = Exception.classin @Transactional,但还是无法解决。

这是我的代码

控制器

@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方法加载了我的实现类Service,它写了一个容易出错的1/0。我希望事务在错误发生后回滚,但事实并非如此。

标签: javajpa

解决方案


添加@Repository您的UserDao可以解决该错误。
不确定,但它可以工作。


推荐阅读