在 MongoDB 文档中,他们建议使用 ObjecId 进行手动引用。 请参阅https://docs.mongodb.com/manual/reference/database-references/#document-references
original_id = ObjectId()
db.places.insert({
"_id": original_id,
"name": "Broadway Center",
"url": "bc.example.net"
})
db.people.insert({
"name": "Erin",
"places_id": original_id,
"url": "bc.example.net/Erin"
})
我正在使用spring-data-mongodb,我正在寻找的是一个像这样定义的People类:
@Document
public class People {
private String name;
@Reference // or any Annotation to convert an ObjectId to a String
private String placesId;
private String url;
}
如何在 mongoDB 中将“places_id”作为 ObjectId 但映射到 POJO 中的字符串?
我期望有一个像@Reference这样的注释,但它似乎没有实现。
我不明白为什么我们在 spring-data-mongodb 中没有这种注释。我不想实现像 spring documentation 中建议的显式转换器。对于所有使用手动引用的文档。 也许这不是正确的方法。
我错过了什么吗?
更新:
我喜欢只使用 String 而不是 ObjectId 的 POJO 的想法。假设我有一个像这样的Place类:
@Document
public class Place {
@Id
private String id;
private String name;
}
place.getId()
将是一个字符串,但 people.getPlaceId()
将是一个 ObjectId。我想避免这种不必要的映射。
最佳答案
解决方案是:
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.data.mongodb.core.mapping.FieldType;
public class People {
@Field(targetType = FieldType.OBJECT_ID)
private String placesId;
}
这会将 POJO 字符串映射到 MongoDB 中的 ObjectId。
关于java - 在 Java 中使用 ObjectId 作为字符串(手册引用)与 spring-data mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010606/