2017-04-25 9 views
0

私は2つのコレクションを持っています。保存操作の後モルフィアは@参照されたエンティティの読み込みを無効にします

@Entity 
public class TypeA { 
    //other fields 
    @Reference 
    List<TypeB> typeBList; 
} 

@Entity 
public class TypeB{ 
    //Fields here. 
} 

、サンプルのタイプAの文書以下の通りです:

{ 
    "_id" : ObjectId("58fda48c60b200ee765367b1"), 
    "typeBList" : [ 
     { 
      "$ref" : "TypeB", 
      "$id" : ObjectId("58fda48c60b200ee765367ac") 
     }, 
     { 
      "$ref" : "TypeB", 
      "$id" : ObjectId("58fda48c60b200ee765367af") 
     } 
    ] 
} 

私はAタイプのクエリを実行すると、morphiaは熱心に私がいけない、すべてのタイプBのentitesを、ロードします。

@Reference(lazy = true)を使用してみました。しかし助けなし。

私はmorphiaを使ってクエリを書くことができますが、ここではすべての$ idsをtypeBList内に取得する方法はありますか?

答えて

0

@Referenceの代わりにObオブジェクトIDを持ち、必要なときに手動でこれらのエントリをフェッチします。

Lazyはオンデマンドでのみ参照エンティティをロードしますが、そのリスト内の何かにアクセスしようとしているため、ロードされます。

個人的意見:@Referenceは、起動するとすばらしく見えますが、その使用によってすぐに問題が発生する可能性があります。多くの参照を含むスキーマを構築しないでください。MongoDBはリレーショナルデータベースではありません。

+0

提案のための@xeraaありがとうございました。 typeBListの@Reference(idOnly = true)はこれを実行できます。 –

+0

ストレージに関連するものではありませんか?少なくともドキュメントが信頼できるものであれば、https://mongodb.github.io/morphia/1.3/guides/annotations/#reference – xeraa

+0

はいです。指摘してくれてありがとう。 –

関連する問題