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

如何构建包含连续排序方法的查询?链式调用排序方法时因返回值为void报错

解决QueryBuilder链式调用order方法报错问题

嘿,我之前也踩过这个坑!你遇到的问题根源很明确:order()方法的返回值是void,它是直接修改当前的QueryBuilder实例,而不是返回一个新的实例,所以没法像equals()、and()那样链式调用下一个order()。

咱们调整下代码结构就能解决,把链式调用的order()拆成单独的调用步骤就行:

final qc = Entity_.objectID
    .equals(objectId)
    .and(Entity_.date
        .lessOrEqual(date.millisecondsSinceEpoch));

// 先创建基础的QueryBuilder实例
final QueryBuilder qBuilder = _box.query(qc);

// 分别调用order方法,每个order都会对当前实例添加排序规则
qBuilder.order(DualPhaseOilWaterTankReadingData_.readingNumber);
qBuilder.order(DualPhaseOilWaterTankReadingData_.readingDate);

// 完成排序配置后再build查询
final builtQuery = qBuilder.build();
List<Entity> data = builtQuery.find();
builtQuery.close();

return data;

这样修改后,排序规则会按照你调用order()的顺序生效:先按readingNumber排序,当这个字段值相同时,再按readingDate排序,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:02:43