2015-01-13 19 views
2

的列表是有益的查詢後脫離大名單的實體,即使用默認模式像那些實體:JPA:拆下連接只讀實體

// Find all 
for List<Device> devices = em.createNamedQuery("find.*.devices", Device.class).getResultList(); 

// Detach all 
for (Device d : devices) { 
    em.detach(d); 
} 

我們能夠避免某些類型的負諸如錯誤地更新被視爲「只讀」(可以保證)的實體的數據庫或節省內存。

+0

你的問題是什麼? –

回答

4

如果您想要在數據庫中沒有任何更新的情況下使用列表,您可以將對象分離。

您有以下選擇:

  1. 如果您正在使用程序化交易,不要打開事務。請注意,交易未打開:

    EntityManager em = EntityManagerFactory.createEntityManager();

    列表personList = em.query()

  2. 標記您的方法,交易不支載@TransactionAttribute(NOT_SUPPORTED)

  3. 如果清除EntityManager的你將所有分離enties:em.clear()
+0

謝謝,這幫了很大的忙! –

+0

不客氣。 (: – uaiHebert