当前位置: 首页 > 知识库问答 >
问题:

Mongo Spring数据“Foreign”键

黄朗
2023-03-14

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

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

我的收藏的类是这样的:

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

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

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

对象“Collection A”中字段“Collection BID”上的字段错误:拒绝值[];代码[TypeMismatch.CollectionA.CollectionBid,TypeMismatch.CollectionBid,TypeMismatch.org.bson.Type.ObjectId,TypeMismatch];参数[org.springframework.context.support.defaultmessageSourceResolvable:代码[Collectiona.collectionBId,collectionBId];参数[];默认消息[collectionBId]];默认消息[无法将类型为“java.lang.String”的属性值转换为属性“Collection Bid”的必需类型“org.bson.types.objectid”;嵌套异常为java.lang.IllegalStateException:无法将类型为[java.lang.String]的值转换为属性“Collection Bid”的必需类型[org.bson.types.objectid]:找不到匹配的编辑器或转换策略]

如果我将collectionBId变量设置为String,那么这些变量将作为String而不是$oid插入

我怎样才能完成这件事呢?

Thans

共有1个答案

邓毅
2023-03-14

如果您真的希望数据存储中有关系,那么您应该使用Spring Data MongoDB@dbref注释。但我建议您重新考虑/重新设计您的模式,以便使用嵌入式文档。也许这份文档会帮助您设计出更好的模式。

 类似资料:
  • Foreign LINUX 项目旨在让用户能在Windows上不做任何修改的跑Linux二进制文件。自由软件社区有一个类似的项目叫Cygwin,但需要重新编译才能将Linux或BSD上的软件运行在Windows上。Foreign LINUX绕过了这一对普通用户来说过于困难的过程,它是一个动态二进制翻译器和Linux系统调用接口模拟器,目前它处于早期开发阶段,能运行的Linux工具包括bash、vi

  • 因此,我试图将我的模块从使用AxonIQ3.4转移到4.1,我使用mongodb来保存事件,而不是使用axon服务器。 如果我回滚到Axoniq3.4,一切都能正常工作,但不能让它在4.1中工作

  • 1. 定义 维基百科:主键(Primary Key)是数据表中每条记录唯一且完整的标识;外键(Foreign Key),又称外来键,是另一个数据表中的字段。 慕课解释:主键十分重要,每一张表都应有一个主键,且主键只能有一个,主键不能为空;外键用来表示表与表之间的关系,是关系数据库的核心,一般使用另一张表的主键作为外键。 2. 前言 本小节,我们将学习 SQL 中的主键和外键。 在前面的学习中,我们

  • SQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。 让我们通过一个实例来解释外键。请看下面两个表: "Persons" 表: P_Id LastName FirstName Address City 1 Hansen Ola Timoteivn 10 Sandnes 2 Svendson Tove Borgvn 23 Sandnes

  • 目前正在学习JavaFX和Sqlite。 我有一个用MySQL manager构建的Sqlite数据库,已经有外键规则等。 例如用户和地址: 我将数据库连接到我的JavaFX应用程序,现在我正在尝试创建寄存器函数,因此新用户在fxml模板上,他可以填写“Benutzername”,“Vorname”等,以及他的地址“Land”,“Stadt”等。 以下是表格: 将这些值添加到数据库中是可行的,但是

  • 问题内容: 我试图在数据库上运行一些更新脚本,但出现以下错误: ALTER TABLE语句与FOREIGN KEY约束“ FK_UPSELL_DT_AMRNO_AFMKTG_REF”冲突。数据库“ ECOMVER”的表“ dbo.AFFILIATE_MKTG_REF”的列“ AMRNO”中发生了冲突。 我正在运行以下脚本: AMRNO是表AFFILIATE_MKTG_REF中的PK。 另外,我尝试