0
嗨我有一个非常简单的结构,我有以下类。 当根据用户列表进行选择时,我得到JSON无限递归。 我试图把@JsonManagedReference和@JsonBackReference和所有我得到的是,我没有得到JSON无限递归,但如果你看我上传的图像,你会看到服务器的丑陋回应。Java Sprint MVC JSON无限递归
public class Organisations extends SuperModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(name = "parent_id", nullable = true)
private Organisations parent;
@OneToMany(mappedBy = "parent")
private List<Organisations> childs = new ArrayList<Organisations>(); }
public class Permissions extends SuperModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private Users user;
@NotNull
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "organisation_id", nullable = false)
private Organisations organisation;
}
public class Roles extends SuperModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "organisation_id", nullable = false)
private Organisations organisation;
@NotNull
@Size(min = 3, max = 20)
@Column(name = "role", unique = true, nullable = false)
private String role;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name="role_permissions", [email protected](name="role_id"), [email protected](name="permission_id"))
private List<Permissions> permissions = new ArrayList<Permissions>();
}
public class Users extends SuperModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "organisation_id", nullable = false)
private Organisations organisation;
@NotNull
@ManyToOne(optional = false)
@OneToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "role_id", nullable = false)
private Roles role;
}
This is an image from response
永远不要尝试序列化json中的递归数据结构 – Javier
类看起来设计不当。你必须有很多冗长的关系。从'Permissions'中删除'Users'字段或用'@ JsonIgnore'注释标记'Users'。在后一种情况下,您将不得不手动设置该属性。 –
尝试将实体取消所需深度。 – StanislavL