列表变空后查询。关闭jsp中的所有方法

时间:2014-02-14 07:52:02

标签: database arraylist persistence jdo finally

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();
    }
}

执行execute方法后,'fieldOptions'具有特定值。但在closeAll()之后,列表变为空。你能告诉我它为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

结束事务并且关闭PM后返回的“List”不是真正的List,而是一个惰性加载列表,一旦它没有连接到数据存储区就不能延迟加载。在关闭txn / PM之前,最简单的选项是将查询结果放入(复制)到您自己的列表中。