【问题标题】:Mongo Spring Data "foreign" keyMongo Spring Data“外”键
【发布时间】:2012-10-15 17:14:54
【问题描述】:

我正在使用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 插入

我怎样才能做到这一点?

【问题讨论】:

    标签: java json spring mongodb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 2021-03-16
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2014-10-26
      • 1970-01-01
      相关资源
      最近更新 更多