2014-11-21 114 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