首页 > 解决方案 > SpringData注解(或标准方式)在java中使用String for MongoDB ObjectId进行手动参考

问题描述

我想知道是否有一种方法可以在 java 端映射 String 以手动引用 ObjectIds,反之亦然。例如在:

User =[{_id: ObjectId('123'),
        pics_id: ObjectId('123'), ...
      }, ... ]

pics_id 是对另一个集合的手动引用。以下代码:

class User{
@Id id;
@Field("pics_id") String picId;
}

将 pics_id 存储为 String 而不是 ObjectId。有没有办法在不使用 ObjectId 类而不是 String 的情况下实现这一点?恕我直言,在 java 代码中使用 ObjectId 会使代码看起来有点奇怪,因为有些 id 是字符串(例如用 @Id 注释的字段),有些是 objectId。谢谢你。

标签: mongodbspring-data-mongodb

解决方案


随着即将发布的 Spring Data MongoDB 2.2 版本,可以通过@Field注释定义所需的目标类型。类型信息被传递到转换子系统,例如。可以将纯字符串存储为代码或 ObjectId。

class User {

  @Id String id; 
  @Field(targetType = FieldType.OBJECT_ID) 
  String picId;
}

请查看2.2.0.RC1 的文档以获取更多详细信息。


推荐阅读