2017-04-21 80 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