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?

Original source

Related problems