java - spring jpa @transaction 不回滚
问题描述
我的项目遇到了Spring JPA事务不会回滚的问题。项目框架为spring MVC + Spring + spring data JPA + oracle。我在互联网上搜索了很多资料,但仍然无法解决我的问题。
尝试了很多方法,比如设置方法为 public 或者添加rollbackFor = Exception.class
in @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。我希望事务在错误发生后回滚,但事实并非如此。
解决方案
添加@Repository
您的UserDao可以解决该错误。
不确定,但它可以工作。
推荐阅读
- dart - 加载图像时,CircularProgressIndicator 小部件不会消失
- c# - 将像素列表声明为带有附加变量的 blob
- javascript - 使用 Ionic 3 从 Firebase 中删除数据
- c - 在不知道维度的情况下,在 C 中创建指向多维数组的指针
- python - 多处理:使用带有大字典的`pool.starmap`
- javascript - 在 promise.all 完成后执行操作?
- mongodb - 您如何按单位而不是小数截断或舍入数字?
- python - 在 django 中根据基于关系的键、值创建表单
- ios - 如何为分布式应用程序实现非对称加密,其中密钥都可以存储为字符串?
- c++ - 为什么 std::map::emplace 使用会泄漏内存?