【问题标题】:List becomes empty After query.closeall methodin jdo在 jdo 中的 query.closeall 方法后列表变为空
【发布时间】:2014-02-14 07:52:02
【问题描述】:
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();
    }
}

执行方法“fieldOptions”执行后具有某些值。但在 closeAll() 之后,列表变为空。你能建议为什么会这样吗?

【问题讨论】:

    标签: database arraylist persistence jdo finally


    【解决方案1】:

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

    【讨论】:

    • 非常感谢您的解释。它解决了我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多