我有以下课程
@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,然后再插入一次。
这很好,所有,我相信我可以编写一些流量控制来捕捉错误,并在出现问题时表现得很明智。
但是 - 每个人都知道效率低下,因为这是两次保存调用。有一种方法我可以基本上创建嵌套对象,并在ParentWrapper上执行插入,并且如果它不存在则让mongo插入Person实例,对吗?
我一直用Google搜索,但遇到了一些我想知道的问题。
答案 0 :(得分:0)
使用spring-data-mongodb无法做到这一点。框架缺乏使用嵌套对象的能力,并且将其放入try catch中的方式几乎是唯一的方法。