OrmLite 释放 OpenHelperManager 后清理查询结果

OrmLite clean query result after release OpenHelperManager

我有 3 个 table。

@DatabaseTable(tableName = "summary")
public class Summary {


@DatabaseField(columnName = _ID, generatedId = true)
private int id;

@DatabaseField (columnName = OPERATION_NAME)
private String operation;

@ForeignCollectionField(columnName = ENTRIES, eager = true)
private Collection<Entry> entries;
}

第二个:

@DatabaseTable(tableName = "entry")
public class Entry implements Parcelable {

@DatabaseField(columnName = _ID, generatedId = true)
private int _id;

@DatabaseField (foreign = true, columnName = SUMMARY, foreignAutoCreate = true)
private Summary summary;

@ForeignCollectionField(columnName = PARAMS, eager = true)
private Collection<Params> params;
}

第三名:

@DatabaseTable(tableName = "params")
public class Params implements Parcelable {

@DatabaseField(columnName = _ID, generatedId = true)
private int _id;


@DatabaseField (foreign = true, columnName = ENTRY, foreignAutoCreate = true, foreignAutoRefresh = true)
private Entry entry;
}

我查询了

List<Summary> summaries = new ArrayList<Summary>();
summaries = dao.queryForAll();

摘要 的每个元素都包含集合条目。条目的每个元素都包含集合参数;

我得到了 List summaries 和记录,但是之后 OpenHelperManager.releaseHelper(); 我丢失了 Collection 的数据,其中包含来自摘要的第三个 table 的数据。我得到 IllegalStateException。 为什么?

我的问题已经解决了。我需要将 maxEagerLevel 增加到 2(默认 1)。

将此设置为扩展一个急切的外国collection的外国collection的次数。如果你查询 A 并且它有一个 eager foreign-collection 的字段 B,它有一个 eager foreign-collection 的字段 C ...,那么每当你查询 A 时,就会发生很多数据库操作。默认情况下,此值为 1,这意味着如果您查询 A,B 的 collection 将被急切获取,但每个 B objects 将有一个惰性 collection 而不是急切 collection 的 C。只有当你知道自己在做什么时才应该增加它。

int maxEagerLevel()