我有两个类Person和Tasks。这是一对多关系:一个人有一个任务列表,而一个任务属于一个人。
我的应用程序有两种视图。在其中一个中,我需要显示Persons和与每个Person关联的Tasks。在另一个中,我需要显示Tasks和关联的Person。
我的第一个想法是在Mongo中使用双向引用。因此,一个人将有一个任务Id列表,而一个任务将有一个人Id。
像这样:
{
_id: ObjectID("AAF1"),
name: "Person Name",
tasks [
ObjectID("ADF9"),
ObjectID("AE02"),
ObjectID("AE73")
]
}
和:
{
_id: ObjectID("ADF9"),
description: "Task One",
owner: ObjectID("AAF1")
}
但我不知道如何设计我的Spring应用程序来查找所有人员,并构建一个嵌入任务列表的json来发送到UI。我正在使用MongoOperations,以便查找我使用的所有人员CCD_ 1。由于我没有在Persons中嵌入Tasks文档,所以这些对象只有TasksId的列表。获取任务时也是如此:我想将Person添加到将发送到UI的JSON中。
我试着使用@DBref
,并添加了一个Tasks to Person和Person to Tasks的列表,但这以stackoverflow结束,因为每个Tasks都有一个Person,一个人有Tasks,每个Tasks也有一个人,依此类推
我刚刚使用@JsonManagedReference和@JsonBackReference解决了我的问题。
class Person {
@DBRef
@JsonManagedReference
private List<Tasks> tasks;
}
class Tasks {
@DBRef
@JsonBackReference
private Person person;
}