我在Android应用程序中使用ORMLite,我正在尝试持久化并查询嵌套类。创建和更新模型是没有错误的,但我不知道它是否持续存在模型我的期望。当我查询模型时,我得到外部类的数据很好,但它永远不会得到内部类数据。这是我的模型(为了便于阅读而删除):
@DatabaseTable
public class Race {
@DatabaseField(id = true)
private String raceId;
@DatabaseField
private String name;
@ForeignCollectionField
private Collection<Rule> rules;
@DatabaseTable
public static class Rule {
@DatabaseField
private long ruleId;
@DatabaseField
private String name;
@DatabaseField(foreign = true)
private Race race;
}
}
我的添加方法:
public boolean addOrUpdateRace(Race race) {
CreateOrUpdateStatus status = mHelper.getRaceDao().createOrUpdate(race);
return status.isCreated() || status.isUpdated();
}
我的查询方法:
public List<Race> getAllRaces() {
return mHelper.getRaceDao().queryForAll();
}
getAllRaces
中的列表已填充所有预期变量(raceId和name),ForeignCollection
为rules
。当我尝试访问rules
时,我得到一个大小为0的迭代器。
我不确定如何处理Race
类中的Rule
变量,我只知道当我没有包含它时,ORMLite会抛出错误。我已经尝试将其保留为null,希望ORMLite能够自动与其父级建立连接,当这种方法无效时,我尝试在持久化之前设置race
变量,但这具有相同的效果。 / p>
我哪里出错?
答案 0 :(得分:3)
规则的DB /表似乎没有根据您提供的代码进行填充。
你需要为'Rule'类创建一个Dao并在解析过程中使用一个合适的addOrUpdateRule(规则规则),因为ORMLite不能根据它作为'Race'中的ForeignCollectionField的关联自动填充DB / Table for Rule类。