在Mongo中使用双向引用时的Spring应用程序设计



我有两个类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;
}

相关内容

  • 没有找到相关文章

最新更新