Infinite Recursion with Jackson JSON, Spring MVC 4.2 and Hibernate JPA issue
Just put @JsonIgnore
@JsonIgnore@OneToMany(fetch = FetchType.LAZY, mappedBy = "userClass")public List<User> getUsers() { return this.users;}
This will ignore lazy load object and fix your issue.
Update
- According to Udara Seneviratne answer, You can handle
bi-directional relationship
by@JsonManagedReference, @JsonBackReference
.
@JsonIgnore just ignore the annotated field from the result. If you need to include exception caused field also with the result, use @JsonManagedReference, @JsonBackReference according to following tutorial. http://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
If a class has more than one bi-directional relationships, better to use @JsonIdentityInfo
It can be done by many ways
- Remove the getter method from one of the class.
Use @JsonIgnore in One of the class (Problem : In Both above cases it will ignore the field from the result.)
If You use below annotations, It will include the field also
- @JsonManagedReference, @JsonBackReference
- @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id")