2014-02-14 22 views
0
public static List<FieldOption> 
getFieldOptionListOfField(PersistenceManager pm, long fieldId) throws NoSuchFieldOptionException { 
    Query query = pm.newQuery(FieldOption.class); 

    try { 
     query.setFilter("this.fieldId == fieldId"); 
     query.declareParameters("long fieldId"); 
     query.setOrdering("orderId ascending"); 
     List<FieldOption> fieldOptions = (List<FieldOption>) query.execute(fieldId); 
     logger.debug("fieldOptions = " + fieldOptions); 
     return fieldOptions(); 
    } finally { 
     query.closeAll(); 
    } 
} 

在執行excute方法'fieldOptions'後有一定的值。但是在closeAll()之後,列表變爲空。你能否建議爲什麼會發生?列表變爲空後jdo中的query.closeall方法

回答

0

在您結束事務並關閉PM之後返回的「List」不是真正的List,而是一個惰性加載列表,一旦它沒有連接到數據存儲區,就無法延遲加載。在關閉txn/PM之前,最簡單的選項是將查詢結果放入(複製)到您自己的列表中。

+0

非常感謝您的解釋。它解決了我的問題 – user3309305

相關問題