2017-04-21 22 views
0

私は、次のクラスSpring Mongodb - 入れ子になった文書を挿入しますか?

@Document 
public class PersonWrapper { 

    @Id 
    private ObjectId _Id; 

    @DBRef 
    private Person person 

    // Getters and setters removed for brevity. 
} 

public class Person 
{ 
    @Id 
    private ObjectId _Id; 

    private String name; 

    // Getters and setters removed for brevity. 
} 

を持っている - 私は、次のMongoReposityClassを持っている...

リポジトリクラスは無意味だったかもしれ表示
public interface PersonWrapperRepository extends MongoRepository<Person, String> { 
    Person findByPerson_name(String name); 
} 

- しかし、基本的に私はここで行うことは、インスタンスを作成しています私はPersonWrapperオブジェクトを作成してから、次のようにします。

repo.insert(personWrapperInstance); 

これは実際には動作しますが - 最初に "Person"を挿入し、次に返されたオブジェクトをPersonWrapperに追加し、次に別の挿入を行う必要があることがわかりました。

これはすべて問題ありません。エラーが発生して何かが壊れてしまった場合は、わかりやすく動作するフロー制御を記述することができます。

いずれにしても、2つの呼び出しを保存するため、効率が悪いことに誰もが知っています。基本的に入れ子になったオブジェクトを作成し、ParentWrapperに挿入し、mongoにPersonインスタンスを挿入する方法はGOTがあります。

私はこれをグーグルで見つけましたが、私が知りたいことを得るいくつかの問題に遭遇しました。

+0

誰でも私にこれを手伝うことができますか?多分、フレームワークはそれをまだできませんか?私はまだオンラインで一つの答えを見つけていません。 – IWishIWasABarista

答えて

0

これはspring-data-mongodbでは実行できません。フレームワークにはネストされたオブジェクトを扱う能力がありません。試しにキャッチする方法は、これを行う唯一の方法です。

+0

本当ですか?しかし、このようなことができなければ、それは永続性を持つという全体の点を否定します。 MongoDbはこれまでのところ最初から最後まで私たちのために失望してきました。 – IWishIWasABarista

関連する問題