Mongo Spring Data“外国”关键

时间:2012-10-15 17:14:55

标签: java json spring mongodb

我正在使用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];参数[];默认   message [collectionBId]];默认消息[无法转换属性   类型'java.lang.String'的值为必需的类型   'org.bson.types.ObjectId'用于属性'collectionBId';嵌套   异常是java.lang.IllegalStateException:无法转换值   输入[java.lang.String]到必需的类型[org.bson.types.ObjectId]   property'collectionBId':没有匹配的编辑器或转换策略   发现]

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

插入

我该如何做到这一点?

Thans

1 个答案:

答案 0 :(得分:2)

如果您确实需要数据存储区中的关系,则应使用Spring Data MongoDB @DBRef注释。但我建议您重新考虑/重新设计您的架构,以支持使用嵌入式文档。也许this文档可以帮助您设计更好的架构。