Maz*_*aze 5 java jpa spring-data-jpa
我看过关于这个主题的几个不同的帖子,但大多数都认为它不起作用。我想做的是在循环中保存多个对象,但如果其中一个失败 -> 回滚所有保存的对象。
这是我当前的代码。
@Override
public Fleet saveFleet(String fleetId, List<String> serialNoList) {
fleet = new Fleet();
Fleet tempFleet = new Fleet();
fleet.setKey(new FleetKey());
//Change this to string utils uppercase
fleet.getKey().setFleetId(StringUtils.upperCase(fleetId));
fleet.getKey().setUserId(StringUtils.upperCase(userService.getCurrentUser().getUserId()));
fleet.getKey().setDealerCd("USER");
for (int i = 0; i < serialNoList.size(); i++) {
//Try catch block?
tempFleet = fleetRepo.save(fleet);
}
//commit if all the data goes correctly, rollback if there is an exception.
return tempFleet;
}
Run Code Online (Sandbox Code Playgroud)
正如其他人提到的,您可以使用@Transactional: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html
它实际上做的是:
try {
transaction.begin();
saveFleet(fleetId, serialNoList);
transaction.commit();
} catch(Exception ex) {
transaction.rollback();
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10821 次 |
| 最近记录: |