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,因为这看起来像是一个非常基本的功能.
| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |