1

Product (productDb データベースのコレクション製品に格納されている) を参照する Entity Market (市場は marketDb データベース内のコレクションに格納されています) があります。

/*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. 商品が Market と同じデータベースに属するコレクションに格納されている場合、Product は Market での読み取りの一部として返されます。2. 上記のコードで、Product 参照を次のように指定した場合: @DBRef (db = "productDb", lazy = true) private Product product;

次に、Product エンティティの ID が入力された DBRef への参照を取得します。

マーケットに属する製品エンティティが、異なるデータベースに属しているときに、マーケットでの読み取り操作の一部として読み込まれない理由を誰か提案できますか? 2 つが異なるデータベースにある場合、または MarketRepository が productDb データベースから製品データを読み取るために追加の構成を追加する場合、マーケットの参照製品をロードするために、コンバーター/カスタム クエリを追加する必要がありますか?

ありがとう。

私が使用する Mongo-Java Driver は 3.2.2 です。

4

1 に答える 1