hibernate Sping Boot :无限递归

k3bvogb1  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(147)

我在Sping Boot Hibernate项目中有以下实体。

实体

1.任务-表示任务/作业详细信息
1.座席-表示可用于处理任务的座席

  1. TaskAgent -存储分配执行任务的座席的详细信息

关系

  1. Task具有对TaskAgent的ManyToOne引用,名称为taskAgents
  2. Agent还有一个对TaskAgent的ManyToMany引用,名称为agentTasks。
    1.然而,TaskAgent具有对名称为task的Task的ManyToOne引用和对名称为selectedAgent的Agent的ManyToOne引用。
    我的控制器中还有以下API端点

终点

1./tasks(GET)-返回所有任务的列表,如果任务已分配给代理,则也发送代理的详细信息
1./agents(GET)-返回所有代理的列表,还包括为代理分配的所有任务的列表

问题

不幸的是,这种设置会导致无限递归。我知道问题出在哪了
获取任务会导致填充taskAgent(类型为TaskAgent,其中存储了分配给该任务的工作人员的详细信息),其中包含selectedAgent,selectedAgent再次包含对TaskAgent的ManyToMany引用(其中该代理的所有分配任务的列表可用)
我尝试了LAZY_LOAD与Hibernate 5 Module,@JsonBackReference和@JsonManagedReference,@JsonIgnore,父实体中的@JsonIgnoreProperties等。
我怎样才能让这两个端点都工作而不需要递归?
谢啦,谢啦

im9ewurl

im9ewurl1#

为了其他人的利益,我使用
@JsonIdentityInfo(generator= JSOGGenerator.class)

相关问题