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需先在项目根Gradle中添加KSP插件依赖。ksp "io.objectbox:objectbox-processor:$objectbox_version"
2. 调整查询语法写法
编译器提示equal函数未标记infix修饰符,无法使用空格调用的infix语法,可改为普通函数调用写法:
ScoreSheetDesignEntity_.gameName.equal(gameName)
3. 检查版本兼容性
确保项目使用的Kotlin版本与ObjectBox 4.0.3兼容,推荐使用Kotlin 1.8.x及以上版本,版本不匹配可能导致扩展函数无法正常识别。
内容的提问来源于stack exchange,提问作者user3036762
相关产品推荐
相关产品推荐

