2015-06-12 25 views
-1

hy all, 我們假設我們有很多實體A,B,C,D 當我調用ejb bean保存新實體或更新實體時,我想找到一個模式用於驗證是否不是另一個託管Bean線程已經保存了一個新的實體A或B或者C或D或者已經更新了一個或者一個模式以驗證在事務處理時表是否被修改了 ,因爲當我喜歡保存新實體A時有很多字段整數賴以山楂匹配特定實體B和c和d被保存在DB狀態爲DB中的一個或多個表與EJB3

@Stateless 
public class EntityABean implements EntityARemote, EntityALocal { 

@Resource 
private SessionContext context; 

@EJB 
private DaoEntity daoEntityEjb; 

public void doSomthing(Object param1, Object param2 ...) { 
try { 
//dosomthing 
} 
catch(Excepyion ex) { 
context.rollback(); 
throw ex; 
} 
} 

回答

0

你的問題不是很清楚,但是從我可以做出來的是,你可能需要自動樂觀併發控制mechan JPA的主題。 您需要按照here的說明註釋您的版本列,其餘由基礎JPA兼容提供商負責。 欲瞭解更多詳情,你可以看看另一個SO回答here

您可以通過指定鎖定模式來進一步控制JPA管理對版本實體的鎖定的方式。您可以通過EntityManager類的lock()方法執行此操作。下面是該方法的簽名:

public void lock(Object entity, LockModeType lockMode); 

更多解釋看一看here

+0

我知道,我的問題,我喜歡發現模式觀察員Ø另一個是我稱它爲我可以有信息,如果我的交易存在時不是另一個線程有更新或保存新的實體。另一種解決方案是:所有的metode調用一個metode syncro,因爲我可以保證所有的實體沒有被修改,或者是新的,當im在metode中被保存時 –

+0

解決方案在EJB3.1中,當我可以使用session @singleton時,我如何保證訪問對於這個bean中的所有方法都是syncro –

相關問題