加入ActiveAndroid - 如何获取第二个表的数据

nas*_*sch 5 sqlite android activeandroid

我正在使用ActiveAndroid并使用外部联接运行查询:

List<NavigationState> models = new Select()
                    .from(NavigationState.class)
                    .leftJoin(BundleItem.class)
                    .on("aColumnName = anotherColumnName")
                    .execute();
Run Code Online (Sandbox Code Playgroud)

显然我想要的是NavigationStates,以及任何相关的BundleItems.我实际得到的是NavigationStates.以下是运行查询后填充游标数据的ActiveAndroid代码的一部分:

List<String> columnsOrdered = new ArrayList<String>(Arrays.asList(cursor.getColumnNames()));
                do {
                    Model entity = Cache.getEntity(type, cursor.getLong(columnsOrdered.indexOf(idName)));
                    if (entity == null) {
                        entity = (T) entityConstructor.newInstance();
                    }

                    entity.loadFromCursor(cursor);
                    entities.add((T) entity);
                }
                while (cursor.moveToNext());
            }

        }
Run Code Online (Sandbox Code Playgroud)

你可以看到整个事情,这是processCursor方法,这里:https://github.com/pardom/ActiveAndroid/blob/df29214c9584d7b626f361e95b95daccb0c0114c/src/com/activeandroid/util/SQLiteUtils.java

所以你可以看到,除了填写传入的类型(loadFromCursor不填写其他表中的任何内容)之外,它不会尝试做任何事情.我甚至把它改成要求列表,BundleItem但它显然仍然返回了同样的东西.

AA文档关于从一对多关系的许多方面获取"许多"记录的唯一内容是调用Model.getMany,但是它运行自己的查询(结果集中的每个记录一个!),所以如果我这样做在第一个查询中进行连接没有意义.

我错过了什么,因为看起来似乎连接是ActiveAndroid允许的,但没有用,因为你只能从连接中的一个表中获得结果?在这种情况下,我可以解决它,但我想知道我是否选择了错误的ORM,因为这看起来像是一个非常基本的功能.