Direct self-reference leading to cycle exception
deserialization, elasticsearch, jackson, java, serialization
Solution
In this case you need to annotate the relationships with @JsonManagedReference and @JsonBackReference like this:
@ManyToOne
@JoinColumn(name = "company_id", referencedColumnName = "id")
@JsonBackReference
private Company company
And
@OneToMany(mappedBy="company")
@JsonManagedReference
private Set<Employee> employee = new HashSet<Employee>();
There is a nice example here
Problem
I have a class; something like the following: ``` public abstract class ElasticSearchValue<T> { private Long txId; private Long currentTxId; private T previous; public Long getTxId() { return txId; } public void setTxId(Long txId) { this.txId = txId; } public Long getCurrentTxId() { return currentTxId; } public void setCurrentTxId(Long currentTxId) { this.currentTxId = currentTxId; } public Object getPrevious() { return previous; } public void setPrevious(T previous) { this.previous = previous; } } ``` And a class that extends the class above ``` public class DailyActivity extends ElasticSearchValue<DailyActivity> { Long agentId; Date date; Long success; public Long getAgentId() { return agentId; } public void setAgentId(Long agentId) { this.agentId = agentId; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Long getSuccess() { return success; } public void setSuccess(Long success) { this.success = success; } @Override public String toString() { return agentId + "_" + date.toString(); } } ``` Now, I have an object of type `DailyActivity`, and when I try to convert it into a JSON string, I get the following exception: Caused by: com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.pr.analysis.DailyActivity["previous"]) I have looked for solution on google but the solution which I get asks to put `jsonIgnore` to previous value which is not what I intent to do. Has anyone faced the same issue? Thanks EDIT I know there is a cycle in the class and I am asking how to deserialize the class which has a self reference?