【发布时间】:2020-10-16 19:23:02
【问题描述】:
我有一个带有 String Id 的数据类,我将它保存到带有 null 值的 mongoDB 中以获取自动生成的替换。
@Document(collection="applications")
@TypeAlias(Constants.Application)
public class DataApplication implements IApplication{
@Id
@Field("id")
private String id = null;
...
}
这按预期工作,但是我面临一个问题,我似乎无法从 Spring Mongo Repo 中找到 findById。它能够毫无问题地持久化和检索,像创建 BSON 一样
{
"_id" : ObjectId("5ef9a579bafa09b36225e743c"),
Other fields and things
}
但是,这似乎专门用于尝试使用 id 字段进行查找时。 它没有使用我指定的 Id 字段名称,这很奇怪,但是当我一次检索多个对象时,它们按预期转换回 POJO,我不认为这是一个问题。
据我所见,这似乎是 MongoDB 将值存储为 ObjectId 的结果,因为当我将应用程序拉入 Java 时,当我持久化具有 String Id 值的对象时,我能够通过 Id 检索比较,或者当我创建匹配除 Id 之外的所有字段的示例时,但是当我设置要比较的 Id 时,示例失败。
Prevent Spring Data for Mongo to convert ids to ObjectId 似乎是相关的,因为它提到了底层查询结构,不幸的是我似乎有相反的问题。
【问题讨论】:
-
我可以通过获取所有、获取分页或仅通过示例获取并匹配非 Id 字段来检索它们。该值似乎只是作为字符串的 ObjectId。
-
确定有帮助吗?
标签: java mongodb spring-boot spring-data