如何在Ormlite中将ForeignCollection字段转换为Cursor

时间:2014-02-27 14:25:54

标签: android android-sqlite ormlite

我的下表中有一个ForeignCollection字段:

@DatabaseTable(tableName = "json_main")
public class JsonMain {

    @DatabaseField( id = true)
    int _id;

    @DatabaseField
    int likes_count;

    @DatabaseField 
    String protected_visibility;

    @ForeignCollectionField
    ForeignCollection<JsonUser>    jsonUser = null;
}

此处参考此表:

@DatabaseTable (tableName = "json_main_user")
public class JsonUser {

    @DatabaseField(generatedId = true)
    public int _id;

    @DatabaseField(foreign = true, foreignAutoRefresh = true, columnName = "parent_id")
    private JsonMain jsonMain;
}

我正在构建我的查询以获取光标:

    QueryBuilder<JsonMain, Integer> queryBuilder_main = dao_json_main.queryBuilder();
    PreparedQuery<JsonMain> jsonMains_list =queryBuilder_main.orderBy("sort_id",false).prepare();
    CloseableIterator<JsonMain> closeableIterator = dao_json_main.iterator(jsonMains_list);

    AndroidDatabaseResults androidDatabaseResults=    (AndroidDatabaseResults)closeableIterator.getRawResults();

    Cursor cursor = androidDatabaseResults.getRawCursor();

我已将数据正确插入数据库 我想知道如何使用ForeignCollection使用ormlite获取json_main表的Cursor。以上是我的尝试。

任何答案或建议都得到高度赞赏

1 个答案:

答案 0 :(得分:1)

  

我已正确地将数据插入到数据库中我想知道如何使用orrsorite使用Cursor获取json_main表的ForeignCollection。以上是我尝试过的。

我希望我理解这个问题。 JsonMain Cursor没有来自JsonUser表的任何信息。它具有的是_id字段,它对应于jsonMain_id表中的JsonUser字段。您可以做的是取_id JsonUser并在JOIN表上进行查询以获取相关用户。

执行此操作的唯一方法是构建自己的{{1}}原始查询,该查询返回一个游标中的主要字段和用户字段。不幸的是ORMLite在这种情况下无济于事。