0

我正在使用Spring Data来管理我的 MongoDB 数据库。

在一个集合中,我有 2 个 ObjectId 字段,_id 和另一个引用另一个集合中的实例的字段。

我的收藏类是这样的:

public class CollectionA
{
private ObjectId id;
private String collectionADescription
private ObjectId collectionBId
}

使用这样指定的类,我可以成功地将“外键”作为 $oid 插入。

问题是我收到以下绑定错误:

字段“collectionBId”上的对象“collectionA”中的字段错误:拒绝值 [];代码 [typeMismatch.collectionA.collectionBId,typeMismatch.collectionBId,typeMismatch.org.bson.types.ObjectId,typeMismatch]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable:代码 [collectionA.collectionBId,collectionBId];论据 []; 默认消息 [collectionBId]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“collectionBId”所需的类型“org.bson.types.ObjectId”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为属性“collectionBId”所需的类型 [org.bson.types.ObjectId]:找不到匹配的编辑器或转换策略]

如果我将 collectionBId 变量设置为 String 变量将作为字符串插入而不是 $oid

我怎样才能做到这一点?

4

1 回答 1

2

如果你真的想要数据存储中的关系,你应该使用 Spring Data MongoDB @DBRef注释。但我建议您重新考虑/重新设计您的架构,以支持使用嵌入式文档。也许这个文档会帮助你设计更好的模式。

于 2013-05-27T13:20:08.113 回答