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;
}