我需要在一次交易中在我的服务中保存更多实体 - 如果一次保存失败,则不应保存任何内容。我尝试使用@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.
谢谢
答案 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();
}
希望有所帮助。