2014-02-14 9 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() список становится пустым. Можете ли вы предложить, почему это происходит?Список становится пустым После того, как query.closeall methodin jdo

ответ

0

«Список», возвращенный после завершения транзакции и закрытия PM, не является реальным списком, а вместо этого представляет собой ленивый список загрузок, который не может лениться, если он не имеет никакого отношения к хранилищу данных. Самый простой вариант помещает (копирует) результаты запроса в ваш собственный список перед закрытием txn/PM.

+0

Большое спасибо за ваше объяснение. Решение проблемы – user3309305