Spring Data MongoDb - 手动引用ObjectId到String

时间:2016-03-08 14:00:25

标签: mongodb spring-data spring-data-mongodb

假设我有一个User类,其中包含对客户文档的手动引用:

public class User(){
    @Id
    public String id;
    public String name;
    public String customerId;
}

我想要id和amp; customerId存储为mongo中的ObjectId。

保存用户文档时," id"转换为ObjectId,但customerId将保存为字符串。我可以拥有ObjectId类型的customerId,但我宁愿将POJO作为字符串,并且在保存/查询时让customerId自动转换为ObjectId。似乎没有任何内置注释的行为类似于@Id,但可以用于手动引用。我将如何创建一个,还是有更好的解决方案?我已经阅读了一些转换器,但我不想将整个POJO重新映射到DBObject。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

当您获得客户数据时,您必须自己创建objectId。

Db.Customer.find({"_id" : new ObjectId("$valueFromUserTable")});

所以在Spring Java中你会:

ObjectId objId = new ObjectId("$valueFromUserTable");
Query query = new Query(Criteria.where("_id").is(objId));
Customer customer = super.mongoOps.find(query, Customer.class);