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

spring数据-MongoDB:无法检索属于其他数据库的DBRef文档

洪成济
2023-03-14

我有一个实体Market(Market存储在marketDb数据库中的集合中)引用Product(存储在productDb数据库中的集合产品中)。

/*Entity */
class Market {

@DBRef (db = "productDb")
private Product product;

}

/**市场在集合中存储为:*/

{
  "_id": "4f0bc0e6-b6a8-11e6-a04d-080027e9004f",
  "_class": "com.package.Market",
  "createdById": "123",
  "editedById": "123",
  "name": "Market01", 
  "clientId": NumberLong("1"),
  "version": NumberLong("1"),
  "product": DBRef("product", "456", "productDb", { "$db": "productDb" })
}

当我尝试通过Id读取市场时,我能够获取市场,但产品返回为NULL。

然而:1。如果product存储在与Market属于同一数据库的集合中,则product将作为read on Market的一部分返回。2.如果在上述代码中,如果我将产品引用指定为:@dbref(db=“ProductDB”,lazy=true)私有产品产品;

然后,我将获得对DBRef的引用,其中填充了Product实体的id。

有没有人可以建议一下,当属于市场的产品实体属于不同的数据库时,为什么不作为市场上读操作的一部分加载?当两者在不同的数据库中时,我是否需要添加任何转换器/自定义查询来加载市场所引用的产品,或者一些为MarketRepository添加附加配置以从productDb数据库读取产品数据?

多谢了。

我使用的蒙哥-Java驱动程序是3.2.2。

共有1个答案

祁渊
2023-03-14

嘿,您是否尝试使用fetch=“select”fetch=“join”。lazy=“true”,这意味着它将在单独的查询中检索关联对象,但不是在加载对象时。fetch=“join”它将始终激发一个查询以从数据库中获取关联对象。

 类似资料:
  • 我想从数据库中检索名称。但我总是收到错误: 数据库Java语言 它不断返回错误 android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1,字符串名称=helper.getProductNameT(cur); 有人知道我的编码哪里出错了吗?

  • 我正在尝试获取属性的值以使用引导程序进行删除确认。问题是我无法获取的值。 当我按下控制台按钮时,结果是 管理员视图:488 初始化原型: 对象(0) 数据表: ƒ (t) 添加: ƒ (e,t) 添加返回: ƒ (e) 添加类: ƒ (e) 词缀: ƒ (c) 之后: ƒ () ajax完成: ƒ (e) ajax错误: ƒ (e) ajax发送: ƒ (e) ajax开始: ƒ (e) ajax

  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?

  • 我想让我的web应用程序使用mongodb和spring data multitenat。 基本上,我希望将所有实体(集合)复制到不同的数据库中。然后(基于一些规则,例如登录系统的用户),我想将一些实体实例(文档)存储到正确的数据库中。 例如,我有一个名为DBNameProviderService的服务。动态返回数据库名称的getDbName()。如何使用此服务动态选择正确的数据库? 编辑 抱歉,

  • 我试图将一个包含@dbref的对象保存并加载到另一个恰好是子类类型的对象,并且Spring Data MongoDB将该字段加载为NULL。 发生的情况是,对象保存在集合中,并且MongoDB中的值为并且Person文档中的指向而不是。 集合: 集合: 如果使用或加载对象,则字段为空。但是如果我对burger对象使用,则返回person对象。我在这里有什么理解不对的?

  • 我在firebase中具有以下结构。 为了检索数据,我使用以下代码- 调用onDataChange()时,p0包含除组数据之外的所有其他数据。 这是我的dataclass用户模型- 这是我收到的数据快照- datasnapshot!中没有组!。 更新添加了此行mFirebaseDatabaseReference?。保持同步(错误)。它昨天工作了几次,现在不工作了!