我的项目遇到了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/