我有两个类Person和Tasks。它是一对多的关系:一个人有一个任务列表,一个任务属于一个人。
我的申请有两种观点。在其中一个中,我需要向每个人显示人员和任务。在另一个我需要显示任务和与之关联的人。
我的第一个想法是在Mongo中使用two-way referencing。所以一个Person会有一个Tasks Ids列表,一个Task会有一个Person Id。
像这样:
BasicClientCookie cookie = new BasicClientCookie("XXT", "5a5b98563c4aabd675b81e4ba0fdf6cf");
cookie.setExpiryDate(new Date("Fri Dec 11 15:24:17 GMT+06:00 2015"));
cookie.setDomain("10.0.2.2");
cookie.setPath("/");
cookie.setVersion(1);
cookie.setComment("");
cookie.setValue("5a5b98563c4aabd675b81e4ba0fdf6cf");
cookieStore.addCookie(cookie);
和
{
_id: ObjectID("AAF1"),
name: "Person Name",
tasks [
ObjectID("ADF9"),
ObjectID("AE02"),
ObjectID("AE73")
]
}
但我无法弄清楚如何设计我的Spring应用程序来查找所有人员并构建一个单独的json,其中嵌入了一个任务列表以发送到UI。我使用MongoOperations这样找到我使用的所有人
{
_id: ObjectID("ADF9"),
description: "Task One",
owner: ObjectID("AAF1")
}
。由于我没有嵌入Persons中的Tasks文档,因此这些对象只有Tasks Ids列表。获取任务时同样有效:我想将Person添加到我将发送给UI的JSON。
我尝试使用findAll(Person.class)
并将任务列表添加到Person和Person to Tasks,但这以stackoverflow结束,因为每个Tasks都有一个Person,Person有任务,每个Tasks都有一个Person,所以上。
答案 0 :(得分:1)
我刚刚使用@JsonManagedReference和@JsonBackReference解决了我的问题。
class Person {
@DBRef
@JsonManagedReference
private List<Tasks> tasks;
}
class Tasks {
@DBRef
@JsonBackReference
private Person person;
}