我正在使用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]键入为所需的[org.bson.types.ObjectId]类型
属性“ collectionBId”:没有匹配的编辑器或转换策略
找到]
如果我将collectionBId变量设置为String,则变量将作为字符串而不是$ oid插入
我该怎么做?
坦斯
最佳答案
如果您确实需要数据存储中的关系,则应使用Spring Data MongoDB @DBRef批注。但是我建议您重新考虑/重新设计架构,以使用嵌入式文档。也许this文档将帮助您设计更好的架构。