You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Requery Android 1.5.0版本select调用出现模糊方法调用编译错误

解决Requery 1.5.0中ReactiveEntityStore select调用的编译错误

先看你这段出问题的代码:

Observable<Result<Person>> result = mDataStore.select(Person.class)
    .where(Person.CATEGORY.eq(category))
    .orderBy(Person.SEQUENCE.asc())
    .get()
    .observableResult();

错误原因

问题出在你调用了get()之后再去调用observableResult()——Requery里get()方法是同步获取查询结果,返回的是Result<Person>类型,这个类型并没有observableResult()方法。而observableResult()是属于Query<T>接口的方法,应该直接在链式查询的末尾调用,不需要先调用同步的get()。

修复后的代码

把get()去掉就可以解决这个编译错误:

Observable<Result<Person>> result = mDataStore.select(Person.class)
    .where(Person.CATEGORY.eq(category))
    .orderBy(Person.SEQUENCE.asc())
    .observableResult();

补充说明

如果你的需求是获取单个Person实体的Observable,可以改用observable()方法配合Rx的操作符:

Observable<Person> singlePerson = mDataStore.select(Person.class)
    .where(Person.CATEGORY.eq(category))
    .orderBy(Person.SEQUENCE.asc())
    .observable()
    .first();

如果需要获取列表形式的结果,也可以用toList()操作符转换:

Observable<List<Person>> personList = mDataStore.select(Person.class)
    .where(Person.CATEGORY.eq(category))
    .orderBy(Person.SEQUENCE.asc())
    .observable()
    .toList();

内容的提问来源于stack exchange,提问作者Root

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:16:30