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()之后,列表变为空。你能告诉我它为什么会这样吗?
答案 0 :(得分:0)
结束事务并且关闭PM后返回的“List”不是真正的List,而是一个惰性加载列表,一旦它没有连接到数据存储区就不能延迟加载。在关闭txn / PM之前,最简单的选项是将查询结果放入(复制)到您自己的列表中。