mongodb - MongoDB - FindById 不起作用并给出 null
问题描述
我正在使用 Spring Boot(V2.2.2.RELEASE) + Spring Data Mongo 示例。在这个例子中,我有如下记录
{
"_id" : ObjectId("5cb825e566135255e0bf38a4"),
"firstName" : "John",
"lastName": "Doe"
}
我的仓库
@Repository
public interface EmployeeRepository extends CrudRepository<Employee, ObjectId>{
Employee findById(String id);
}
代码
Employee findById = employeeRepository.findById("5cb825e566135255e0bf38a4");
System.out.println(findById);
即使下面的代码不起作用
Query query = new Query(Criteria.where("id").is(new ObjectId("5cb825e566135255e0bf38a4")));
List<Employee> find = mongoTemplate.find(query, Employee.class);
解决方案
好像有两个问题
- 应该使用 ObjectId
employeeRepository.findById(new ObjectId("5cb825e566135255e0bf38a4"))
- ID 字段带有下划线
new Query(Criteria.where("_id").is(new ObjectId("5cb825e566135255e0bf38a4")))
我不是 Java 人,所以可能会错过,但至少试一试 :)
推荐阅读
- c# - 在 Dapper 中设置表格
- reactjs - 如何过滤 Redux 操作?
- c# - Unity2D:播放时最大化时玩家边界增加
- forms - 在 laravel 验证错误后检查复选框
- javascript - 自动登录到网络表单不起作用
- javascript - Google Scripts:Javascript 函数 window.open 在某些情况下不起作用
- reactjs - 对于 ES6,如何让 sublime text 3 自动调整导入路径中的路径
- prolog - Prolog 无限循环与 Intersect 谓词。(调度)
- intellij-idea - 禁用此弹出窗口 intellij
- arduino - 为与 Arduino 兼容的 PNI RM3100 创建驱动程序