java - spring jpa @transaction 不回滚

标签 java jpa

我的项目遇到了Spring JPA事务无法回滚的问题。项目框架是spring MVC + Spring + spring data JPA + oracle。在网上查了很多资料,还是没有解决我的问题。

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

这是我的代码

Controller

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

服务

服务接口(interface)

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。我希望事务在错误发生后回滚,但事实并非如此。

最佳答案

UserDao 中添加 @Repository 可能可以修复该错误。
不确定,但它可以工作。

关于java - spring jpa @transaction 不回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54646215/

相关文章:

java - 反转属性的最短方法

java - 如何在 Wicket 的 Ajax 响应中设置自定义 HTTP 响应 header ?

java - 将字节数组从java程序发送到c++

java - Hibernate 三重多对多连接

Hibernate JPA QueryBuilder.like

java - 使用 JPA 的 LocalDate 无法正常工作

JPA 删除查询给出错误

Java 的扫描器。如何匹配空白?

java - 为什么它没有显示我的标签?

java - 使用 MongoDB 进行 Hibernate 配置