使用事务进行多次保存

时间:2014-11-21 15:09:43

标签: transactions spring-data rollback

我需要在一次交易中在我的服务中保存更多实体 - 如果一次保存失败,则不应保存任何内容。我尝试使用@Transactional,但它不起作用,或者我不知道,如何使用它:)保存正确的记录并且不保存坏记录,我需要两者都不保存。我怎样才能做到这一点?

我的代码:

public interface MyRecordRepository extends JpaRepository<Record, Long>,
        QueryDslPredicateExecutor<Record> {

}

@Service
public class MyPersisterServiceImpl implements MyPersisterService {...
    @Autowired
    private MyRepository myRepository;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveRecords(List<Record> recordList) {
        for(Record r : recordList){
            myRepository.save(record);
        }
    }
...


@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
... // other annotations
public class Application extends SpringBootServletInitializer {
...

我的环境:带有Spring数据的Spring 4.0.7,querydsl,hibernate,apache tomcat 8,java 8.

谢谢

2 个答案:

答案 0 :(得分:0)

看起来aspectj配置存在问题,因为在代理模式下它按预期工作......我现在将此问题标记为已解决。

答案 1 :(得分:-1)

我让我的交易适用于多个保存,如下所示:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void service-method( ) throws RestServiceException,Exception{
for(entity,entities) {
     repository1.save(entity)
 }
for(entity2,entities2) {
     repository2.save(entity2)
}
throw new Exception();
}
希望有所帮助。