我使用@JsonIgnore
来避免圈子依赖。
现在我要解决的情况是,如何将@JsonIgnore
批注的有效性仅限于特定情况。
有下表(请参见图片):
雇员(雇员的实例可以与其他雇员具有1:N雇员:经理关系-自我加入)
工作分配-每个员工可以分配更多工作
您可以在JSON中看到,同时显示了员工和经理的职位。 我只想显示员工的工作分配,但是我认为,如果我添加@JsonIgnore,则员工和经理的职责都将消失。
我想从JSON中删除只是嵌套的。
如果经理是公司的首席执行官(因此他是自己的经理),则由于圈子依赖问题而什么也没显示。我猜想JsonIgnore会导致什么都不会显示(实际上我想显示信息1x,而不是0x或无穷大时间)
如何解决这个问题?
数据库图片(不允许直接发布):https://i.ibb.co/LQmtgL3/s.jpg
JSON向我展示
{
"id": 2,
"firstName": "Kim",
"lastName": "Johansson",
"emailAddress": "kim.johansson@gmail.com",
"manager": {
"id": 1,
"firstName": "Miia",
"lastName": "Selänne",
"emailAddress": "miia.salanne@gmail.com",
"assignments": [
{
"id": 1,
"seniority": "1",
"startAssignment": "2015-01-01",
"endAssignment": null,
"allocation": 100,
"role": {
"id": 4,
"name": "Manager"
},
}
],
},
"assignments": [
{
"id": 2,
"seniority": "1",
"startAssignment": "2019-01-01",
"endAssignment": "2019-04-30",
"allocation": 50,
"role": {
"id": 1,
"name": "Java BE Developer"
},
{
"id": 3,
"seniority": "1",
"startAssignment": "2019-01-01",
"endAssignment": "2019-04-30",
"allocation": 50,
"role": {
"id": 2,
"name": "Java Fullstack Developer"
},
},
],
Employee.java
(...)
@OneToMany(mappedBy = "employee", fetch = FetchType.EAGER)
@JsonManagedReference
private List<Assignment> assignments;
(...)
Assignment.java
(...)
@ManyToOne
@JoinColumn(name = "employee_id")
@JsonBackReference
private Employee employee;
(...)