【问题标题】:SpringDataMongo : searching for a derived class field in mongo collectionSpringDataMongo :在 mongo 集合中搜索派生类字段
【发布时间】:2018-07-30 14:39:14
【问题描述】:

假设我们有以下模型,

基类

class Meeting
{
  String title;
}

第一个派生类

class OfficialMeeting extends Meeting
{
 int numberOfParticipants;
 String meetingRoomName;
}

第二个派生类

class Party extends Meeting
{
 String theme;
}

作曲

class Schedule
{
 List<Meeting> meetings;
}

当我尝试搜索主题为“海滩派对”的集合“时间表”时,Spring 数据 mongo 错误提示会议没有名为主题的字段。

请在模型设计或搜索 mongo 集合方面提出解决方案。

【问题讨论】:

    标签: spring mongodb spring-boot inheritance spring-data-mongodb


    【解决方案1】:

    是的,当然应该这么说。您的 Meeting 类是父类,无法在运行时检测到它是 Party 或 Official Meeting。 Spring Mongo 没有“实例”运算符。对于您的情况,如果您的收藏同时包含 Party 文档格式和 OfficialMeeting 文档格式,您应该检查“主题”值是否存在(或检查 null,取决于您的数据)以指定它属于哪个类型以及您可以从哪个类型查询正确的类型。但无论如何,根据我的经验,如果不需要,我建议您不要在文档中使用太多格式,尽管它是 NoSQL。您可以随时添加或删除某些属性,例如“元数据”或数组项,但某些可以确定文档类型的属性不应该。

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2015-02-01
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多