在我的Spring启动Hibernate项目中有以下实体:
<<p>实体/strong>- Task -表示任务/作业的详细信息
- Agent——表示可用于执行 任务的代理
- TaskAgent—存储分配给执行任务的代理的详细信息
关系
- 任务有一个名为taskAgents的TaskAgent的ManyToOne引用
- Agent也有一个名为agentTasks的多对多的TaskAgent引用。
- 然而,TaskAgent有一个名为Task的多toone引用Task和一个名为selectedAgent的多toone引用Agent。
在我的控制器
中还有以下API端点终点
/tasks (GET) -返回所有任务的列表,如果任务已分配给代理,则也发送代理详细信息
/agents (GET)—返回所有代理的列表,还包括为代理分配的所有任务的列表
问题
不幸的是,这种设置导致无限递归。我知道问题出在哪里了
获取任务的结果是填充TaskAgent (TaskAgent类型,其中存储分配给该任务的人的详细信息),其中包含selectedAgent,其中包含对TaskAgent的ManyToMany引用(其中为该代理分配的所有任务列表可用)
我尝试LAZY_LOAD与Hibernate5Module, @JsonBackReference和@JsonManagedReference, @JsonIgnore, @JsonIgnoreProperties在父实体等
如何使这两个端点在没有递归的情况下工作?
感谢为了别人的利益,我用
解决了这个问题@JsonIdentityInfo(generator= JSOGGenerator.class
)