use*_*152 1 java spring json hibernate
我知道这已被问过很多次了,解决方案非常明显,但在我的情况下它并没有真正起作用,我无法弄清楚如何解决它.
问题:Could not write JSON: Infinite recursion (StackOverflowError)
设置如下:
员工属于部门.(ManyToOne)部门有一名员工担任经理.(OneToOne)
我不想在部门中有一个@OneToMany列表,因此缺少了拥有方.员工有一个部门对象,但这是它所属的部门,而不是他管理的部门.
Employee.java
@Entity
@Table(name = "ts_employee")
//@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@emp_id")
public class Employee extends AbstractEntity {
@ManyToOne
@JoinColumn(name = "dept_id")
@JsonManagedReference
private Department department;
... getters and setters
}
Run Code Online (Sandbox Code Playgroud)
Department.java
@Entity
@Table(name = "ts_department")
//@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@dept_id")
public class Department extends AbstractEntity {
@OneToOne
@JoinColumn (name = "manager_id")
@JsonBackReference
private Employee manager;
.. other fields.. getters and setters
}
Run Code Online (Sandbox Code Playgroud)
AbstractEntity.java
@MappedSuperclass
public class AbstractEntity implements Serializable {
@Id
@GeneratedValue()
private Long id;
... getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我尝试了两种解决方案:
@JsonBackReference + @JsonManagedReference我摆脱了StackOverflow,但是Department.manager没有被序列化(@JsonBackReference),也没有在响应中发送,这很糟糕.
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class,property ="@ emp_id"),它似乎没有做任何事情,StackOverflow被扔在我的脸上:(
如何在不修改模型类的情况下解决这个问题呢?
非常感谢 :)