首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBRef Data - MongoDB:无法检索属于另一个数据库的Spring文档

DBRef Data - MongoDB:无法检索属于另一个数据库的Spring文档
EN

Stack Overflow用户
提问于 2016-12-02 11:37:30
回答 1查看 931关注 0票数 1

我有一个实体市场(市场存储在marketDb数据库中的集合中),它引用了产品(存储在productDb数据库中的集合产品中)。

代码语言:javascript
复制
/*Entity */
class Market {

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

}

/**Market在集合中存储为:*/

代码语言:javascript
复制
{
  "_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读取Market时,我能够获取Market,但Product返回为null。

但是: 1.如果产品存储在与Market属于同一数据库的集合中,则product将作为read on Market的一部分返回。2.如果在上面的代码中,如果我指定产品引用为:@DBRef (db = "productDb",lazy = true) private Product产品;

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

谁能建议一下,为什么属于Market的产品实体不能作为Market上读取操作的一部分加载,因为它们属于不同的数据库?当两者位于不同的数据库中时,我是否需要添加任何转换器/自定义查询来为市场加载引用的产品,或者是否需要为MarketRepository添加额外的配置以从productDb数据库中读取产品数据?

谢谢。

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

EN

回答 1

Stack Overflow用户

发布于 2016-12-02 17:07:08

嘿你有没有试过用fetch="select"或者fetch="join"。lazy ="true",这意味着它将在单独的查询中检索关联对象,而不是在加载对象时检索。fetch="join“它将始终触发一个查询,以便从数据库中获取关联对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40924374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档