曾經(jīng)做項(xiàng)目沒有考慮那么多,對于級聯(lián)表操作都是正常的一步一步操作,沒有考慮過失敗情況,最近項(xiàng)目遇見了失敗的情況,導(dǎo)致碰到了相應(yīng)的情況,特此mark一下,免得后期繼續(xù)踩坑。
需求如下:新建頁面,頁面中包含1.新建企業(yè),2.新建聯(lián)系人,3.新建機(jī)會。任何一步的邏輯或者DML操作失敗都會導(dǎo)致整體的回滾。只有當(dāng)三步都正常插入成功了以后才會跳轉(zhuǎn)到新生成的機(jī)會的標(biāo)準(zhǔn)頁面。
1.NewOpportunityController:這里做了一個邏輯判斷,當(dāng)聯(lián)系人為空情況下,不允許新建聯(lián)系人。當(dāng)然,現(xiàn)實(shí)場景不會在這里判斷,但是現(xiàn)實(shí)場景會有很多的復(fù)雜的業(yè)務(wù)邏輯,這里只是簡單的處理。
1 public class newOpportunityController { 2 Account account; 3 Contact contact; 4 Opportunity opportunity; 5 OpportunityContactRole role; 6 7 public Account getAccount() { 8 if(account == null) 9 account = new Account(); 10 return account; 11 } 12 public Contact getContact() { 13 if(contact == null) 14 contact = new Contact(); 15 return contact; 16 } 17 public Opportunity getOpportunity() { 18 if(opportunity == null) 19 &