2016-03-05 79 views
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

+0

永远不要尝试序列化json中的递归数据结构 – Javier

+0

类看起来设计不当。你必须有很多冗长的关系。从'Permissions'中删除'Users'字段或用'@ JsonIgnore'注释标记'Users'。在后一种情况下,您将不得不手动设置该属性。 –

+0

尝试将实体取消所需深度。 – StanislavL

回答

0

@Javier你的意思是除去实施Serializable接口的???你认为这会解决我的问题吗?