Spring 在 Mongo 中使用双向引用时的应用程序设计
Spring application design when using two-way referencing in Mongo
我有两个 类 人和任务。这是一对多的关系:一个人有一个任务列表,一个任务属于一个人。
我的应用程序有两个视图。在其中一个中,我需要显示与每个人相关的人员和任务。在另一个中,我需要显示与之关联的任务和人员。
我的第一个想法是在 Mongo 中使用 two-way referencing。所以一个人会有一个任务 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 来查找我使用的所有人员
findAll(Person.class)
。由于我没有在 Persons 中嵌入任务文档,因此这些对象只有任务 ID 列表。获取任务时同样有效:我想将 Person 添加到 JSON 我将发送到 UI.
我尝试使用 @DBref
并将任务列表添加到人员和人员到任务,但这以 Whosebug 结束,因为每个任务都有一个人,一个人有一个任务,每个任务都有一个人等等。
我刚刚使用@JsonManagedReference 和@JsonBackReference 解决了我的问题。
class Person {
@DBRef
@JsonManagedReference
private List<Tasks> tasks;
}
class Tasks {
@DBRef
@JsonBackReference
private Person person;
}
我有两个 类 人和任务。这是一对多的关系:一个人有一个任务列表,一个任务属于一个人。
我的应用程序有两个视图。在其中一个中,我需要显示与每个人相关的人员和任务。在另一个中,我需要显示与之关联的任务和人员。
我的第一个想法是在 Mongo 中使用 two-way referencing。所以一个人会有一个任务 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 来查找我使用的所有人员
findAll(Person.class)
。由于我没有在 Persons 中嵌入任务文档,因此这些对象只有任务 ID 列表。获取任务时同样有效:我想将 Person 添加到 JSON 我将发送到 UI.
我尝试使用 @DBref
并将任务列表添加到人员和人员到任务,但这以 Whosebug 结束,因为每个任务都有一个人,一个人有一个任务,每个任务都有一个人等等。
我刚刚使用@JsonManagedReference 和@JsonBackReference 解决了我的问题。
class Person {
@DBRef
@JsonManagedReference
private List<Tasks> tasks;
}
class Tasks {
@DBRef
@JsonBackReference
private Person person;
}