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

Kotlin中使用ObjectBox的equal查询出现infix修饰符错误

Kotlin中ObjectBox查询语法错误解决方案

问题代码

尝试构建ObjectBox查询时出现语法错误,代码如下:

fun getDesignByGameName(gameName: String): ScoreSheetDesignEntity? {
    val query = scoreSheetDesignBox.query {
        ScoreSheetDesignEntity_.gameName equal gameName     // <<<<<< 错误行
    }
    val entity = query.findFirst()
    return entity
}

错误提示

'infix' modifier is required on 'FirNamedFunctionSymbol io/ objectbox/ Property. equal'.

当前Gradle依赖配置(版本4.0.3)

implementation "io.objectbox:objectbox-java:$objectbox_version"
implementation "io.objectbox:objectbox-kotlin:$objectbox_version"

解决步骤

1. 补充注解处理器依赖

ObjectBox需要注解处理器生成实体元数据类(如ScoreSheetDesignEntity_),当前配置缺少该依赖,需根据项目使用的注解处理工具添加:

  • 若使用Kapt:
    kapt "io.objectbox:objectbox-processor:$objectbox_version"
    
  • 若使用KSP(推荐,编译更快):
    ksp "io.objectbox:objectbox-processor:$objectbox_version"
    
    注意:使用KSP需先在项目根Gradle中添加KSP插件依赖。

2. 调整查询语法写法

编译器提示equal函数未标记infix修饰符,无法使用空格调用的infix语法,可改为普通函数调用写法:

ScoreSheetDesignEntity_.gameName.equal(gameName)

3. 检查版本兼容性

确保项目使用的Kotlin版本与ObjectBox 4.0.3兼容,推荐使用Kotlin 1.8.x及以上版本,版本不匹配可能导致扩展函数无法正常识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:12:39