2013-10-05 55 views
0

我有兩個實體entity1 & entity2由Hibernate管理,如果在保存entity1時出現錯誤,則不能保存entity2。所以,這裏的工作單元由兩個獨立的實體組成:既可以保存也可以不保存。我當前的代碼看起來是這樣的:休眠工作單元

public int saveEntity1() 
{ 
a =1; 
begin session; 
start tx; 
save entity1; 
commit tx; 
    when exception 
    rollback tx; 
    a=0; 
return a; 
} 

public int saveEntity2() 
{ 
a =1; 
begin session; 
start tx; 
save entity2; 
commit tx; 
    when exception 
    rollback tx; 
    a=0; 
return a; 
} 

在客戶端的方法:

public void submitData() 
{ 
    int res = Entity1DAO.saveEntity1(); 
    if(res==1) 
    { 
    Entity2DAO.saveEntity2(); 
    } 
} 

我能堅持在同一事務中的2級的實體,所以我沒有if語句中使用客戶端方法?

+1

呃,這段代碼是什麼語言?僞?從你的實際源代碼中摘錄得更好。 –

回答

0

您可以編寫另一種方法並在其中開始交易。

anotherMethod(){ 

     try{ 
     start tx; 
     method1(); 
     method2(); 
     end tx; 
     }catch(Exception e){ 
     rollBack tx;   
     } 
     }