2017-04-21 104 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); 
} 

顯示repository類可能是毫無意義的 - 但基本上我在這裏做的是創建一個實例然後創建一個PersonWrapper對象,然後執行如下操作:

repo.insert(personWrapperInstance); 

現在,雖然這將實際上起作用 - 我發現我需要先插入「Person」,然後將返回的對象添加到PersonWrapper,然後再插入一個。

這很好,我確信我可以編寫一些流控制來捕捉錯誤,並在出現問題時採取合理的行爲。

然而 - 每個人都知道這樣會效率低下,因爲這是兩次保存。 GOT是我可以基本創建嵌套對象的一種方式,並且在ParentWrapper上執行插入,並且如果mongo不存在,mongo會插入Person實例,對嗎?

我一直在Google上搜索,但遇到了一些問題,得到我想知道的。

+0

有人可以幫我嗎?也許框架還沒有能力呢?我還沒有在網上找到答案。 – IWishIWasABarista

回答

0

這不能用spring-data-mongodb完成。該框架缺乏使用嵌套對象的能力,而將其放入try catch中的方式幾乎是實現它的唯一方法。

+0

真的嗎?但是,如果這樣的事情不能完成,那麼它否定了堅持一切的整個觀點。 MongoDb從一開始到現在一直讓我們失望。 – IWishIWasABarista