2014-11-21 72 views
1

我需要在一次交易中在我的服务中保存更多实体 - 如果一次保存失败,则不应保存任何内容。我试图使用@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 { 
... 

我ENV:春季4.0.7与Spring数据,querydsl,休眠的Apache Tomcat 8,JAVA 8

谢谢

回答

0

它看起来像有是aspectj配置的问题,因为在代理模式下,它的工作方式与预期的一样......我将此问题标记为现在已解决。

-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(); 
} 

希望帮助。

+0

1.您是否认为您发布的代码会被编译? 2.在发布https://stackoverflow.com/help/formatting之前考虑格式化您的代码 – 2017-05-25 02:05:26