我試圖找到一種方法,當列表中的某個元素由於建立的業務規則內的某個原因而失敗時(例如,當拋出我的定製異常時),我可以找到一種回滾方法我如何用spring roo做回滾?
示例如果列表中的一個元素失敗,則該想法不記錄任何東西)
public class ControlSaveElement {
public void saveRecords(List<MyRecord> listRecords) {
Boolean status = true;
foreach(MyRecord element: listRecords) {
// Here is business rules
if(element.getStatus() == false) {
// something
status = false;
}
element.persist();
}
if(status == false) {
// I need to do roll back from all elements persisted before
}
}
...
}
任何想法?我正在使用Roo 1.2.2 ..
謝謝,但如果該過程因任何原因未能堅持列表的最後一個元素...?我希望我可以捕獲錯誤,我想回滾 – Hector
我已經更新了答案,以使保存記錄靜態並且是MyRecord實體類的一部分,以便客戶端可以通過如下方式保存列表:'MyRecord。 saveMyRecordsList(records);' –
我試着做你建議我的,但我得到以下錯誤: 不允許在共享EntityManager上創建事務 - 使用Spring 事務或EJB CMT代替 – Hector