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

Kotlin使用Spring Data MongoDB时addCriteria未解析引用报错

问题原因

你导入了错误的Query类。
你当前引入的org.springframework.data.mongodb.repository.Query是注解类,仅用于标记Repository接口的方法、定义固定字符串格式的查询规则,不能实例化后调用方法构造动态查询,自然不存在addCriteria方法。

addCriteria方法属于org.springframework.data.mongodb.core.query.Query,这才是用来动态构造MongoDB查询条件的实例类,和你参考的示例代码依赖的类完全一致。

正确实现代码

先导入正确的类,再构造查询即可:

// 正确导包
import org.springframework.data.mongodb.core.query.Criteria
import org.springframework.data.mongodb.core.query.Query
import org.springframework.data.mongodb.core.MongoTemplate

// 构造查询
val query: Query = Query()
query.addCriteria(Criteria.where("field1").exists(true))
// 多条件查询可以连续追加规则
query.addCriteria(Criteria.where("status").`is`(1))

// 配合MongoTemplate执行查询,替换为你自己的实体类即可
val resultList: List<YourDocumentEntity> = mongoTemplate.find(query, YourDocumentEntity::class.java)
两类Query的核心差异
  • org.springframework.data.mongodb.repository.Query:注解类型,无公开构造方法,只能写在Repository接口方法上,通过固定JSON字符串定义查询,适合查询逻辑固定的场景,示例:
interface UserRepository : MongoRepository<UserDoc, String> {
    // 注解式Query用法,不需要实例化
    @org.springframework.data.mongodb.repository.Query("{ 'deleted': { \$ne: true } }")
    fun listAllValidUsers(): List<UserDoc>
}
  • org.springframework.data.mongodb.core.query.Query:普通可实例化类,和MongoTemplate配合使用,支持动态拼接查询条件,addCriteria是它的内置方法,适合查询条件随入参动态变化的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:36:25