Hibernate Transactional提交

时间:2017-12-13 19:22:12

标签: java spring hibernate

我正在使用Spring启动应用程序,我有一些方法可以通过列表并通过hibernate对数据库执行多次提交。

例如,我从前端收到用户已修改的对象,并且该对象有许多与之关联的样本,并且每个样本都有许多与之关联的测试。

在这种情况下,我需要生成对象,其样本和测试的副本并保存它们。

我遇到的问题是,如果中间发生异常,hibernate只会回滚最近的提交操作。但我需要从一开始就回滚所有东西。

我仍然是使用hibernate和spring的新手,所以我的问题是如果你有一个执行多个repository.save()调用的方法(因为你在多个表中保存)并且出了问题,你怎么能滚动返回您在此事务期间执行的所有save()操作?

我可以在我的函数上添加一个注释来为我做这个吗?

1 个答案:

答案 0 :(得分:1)

使用来自服务方法的注释,应该可以帮助您:

@Transactional(rollbackFor = Exception.class)

您必须在服务方法的某处抛出异常,如果发生抛出错误,Spring将回滚事务。