使用ORMLite数据库检索数据时,内部类始终为空

时间:2014-02-04 07:47:28

标签: java android android-sqlite ormlite

我在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),ForeignCollectionrules。当我尝试访问rules时,我得到一个大小为0的迭代器。

我不确定如何处理Race类中的Rule变量,我只知道当我没有包含它时,ORMLite会抛出错误。我已经尝试将其保留为null,希望ORMLite能够自动与其父级建立连接,当这种方法无效时,我尝试在持久化之前设置race变量,但这具有相同的效果。 / p>

我哪里出错?

1 个答案:

答案 0 :(得分:3)

规则的DB /表似乎没有根据您提供的代码进行填充。

你需要为'Rule'类创建一个Dao并在解析过程中使用一个合适的addOrUpdateRule(规则规则),因为ORMLite不能根据它作为'Race'中的ForeignCollectionField的关联自动填充DB / Table for Rule类。