我在Sping Boot Hibernate项目中有以下实体。
实体
1.任务-表示任务/作业详细信息
1.座席-表示可用于处理任务的座席
- TaskAgent -存储分配执行任务的座席的详细信息
关系
- Task具有对TaskAgent的ManyToOne引用,名称为taskAgents
- 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等。
我怎样才能让这两个端点都工作而不需要递归?
谢啦,谢啦
1条答案
按热度按时间im9ewurl1#
为了其他人的利益,我使用
@JsonIdentityInfo(generator= JSOGGenerator.class)