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

Spring数据-MongoDB:无法检索属于另一个数据库的DBRef文档,mongodb,spring-data,dbref,Mongodb,Spring Data,Dbref,我有一个实体Marketmarket存储在marketDb数据库中的集合中,该集合引用了productDb数据库中集合产品中存储的产品 /*Entity */ class Market { @DBRef (db = "productDb") private Product product; } /**市场在集合中存储为:*/ { "_id": "4f0bc0e6-b6a8-11e6-a04d-080027e9004f", "_class": "com.package.Market"

我有一个实体Marketmarket存储在marketDb数据库中的集合中,该集合引用了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读取市场时,我能够获取市场,但产品返回为空

然而: 1.如果产品存储在与Market属于同一数据库的集合中,则产品将作为read on Market的一部分返回。 2.如果在上述代码中,如果我将产品参考指定为: @DBRef db=productDb,lazy=true 私人产品

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

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

谢谢


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

嘿,你用fetch=select或fetch=join试过了吗。lazy=true,这意味着它将在单独的查询中检索关联对象,但不会在加载对象时检索。fetch=join它将始终触发单个查询以从数据库中获取关联对象。

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

我猜fetch=select或join是jpa特有的,对吗?在本例中,对于Spring Data-Mongo,我有@DBRef注释,我只能在注释上指定db=${databaseName},lazy=${true/false}。我猜fetch=select或join是jpa特有的,对吗?在本例中,对于Spring Data-Mongo,我有@DBRef注释,我只能在注释上指定db=${databaseName},lazy=${true/false}。