2013-07-16 63 views
1

我有以下的代碼,其中EM是EntityManager的:什麼時候應該使用EntityManger分離方法?

Query query = em.createQuery("SELECT e FROM TODO e "); 
ret = (TODO) query.getSingleResult(); 
em.detach(ret); 
return ret; 

有一次,我從這個方法返回RET(和離開類)不會在實體管理器反正分離?爲什麼我需要使用分離方法?

+0

當會話關閉時它會分離。例如,如果您想要在數據庫中未反映更改的情況下對其進行修改,則可能需要分離該實體。 –

+1

另一個原因可能是將實體傳遞給另一個線程。 –

回答

2

當這個回調方法被期望能夠訪問(讀取),但不影響/改變對象的過程中,我將分離一個實體,然後將其交給用戶方法(也許是回調方法)我的交易。

0

實體在事務結束時自動分離。 有時候你想在之前分離一個實體,因爲你想對你不希望自動持久的實體進行更改。

相關問題