Spring数据-MongoDB:无法检索属于另一个数据库的DBRef文档
我有一个实体Marketmarket存储在marketDb数据库中的集合中,该集合引用了productDb数据库中集合产品中存储的产品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"
/*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}。