Json (fasterxml) stackoverflow exception Json (fasterxml) stackoverflow exception json json

Json (fasterxml) stackoverflow exception


Sure thing, @JsonIgnore does the job. But what if we need ignored field in our JSON output?

The solution is very simple.

We annotate our 'guilty' field by @JsonManagedReference annotation on the one side of our relation (which means our @ManyToMany annotation).

And @JsonBackReference on the other side of relation (where @OneToMany has been placed).

And that's it. No more recursive loops.


Probably if you comment private Category parent; you will not have the StackOverflow. I've got the same problem in a project with circular dependencies.

The best way to solve this problem is to use the id of the parent instead of the Class like:

private Long parentId;

Edit:

The problem is with getParentChain() that is trying to be serialized. By adding @JsonIgnore before the method the problem was resolved.


One annotation solves your problem.

Add following annotation on class.

@JsonIdentityInfo(      generator = ObjectIdGenerators.PropertyGenerator.class,       property = "id")

Other way is to annotate on Collections @JsonManagedReference for forward direction and @JsonBackReference. for backward direction in mapping.

example:

public class User{    @JsonManagedReference    @OneToMany(mappedBy = "user")    Set<Address> s = new Hashset<>();}public class Address{    @JsonBackReference    @ManyToOne    @JoinColumn    User user;}