У меня есть класс что-то вроде этогоDirect самореференция приводит к исключению цикла
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;
}
}
и класс, который расширяет класс выше
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();
}
}
Теперь у меня есть объект типа DailyActivity и когда Я пытаюсь преобразовать его в строку json. Я получаю следующее исключение:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.pr.analysis.DailyActivity["previous"])
Я искал solutio n на google, но решение, которое я попрошу поставить jsonIgnore на предыдущее значение, которое я не намерен делать. Кто-нибудь сталкивался с той же проблемой? Благодаря
EDIT Я знаю, что есть цикл в классе, и я спрашиваю, как десериализацию класса, который имеет ссылку уверенности?
Ya, очевидно. Позвольте мне переформулировать вопрос о том, как вы можете десериализовать объект, который имеет собственную ссылку? –
Я не думаю, что вы можете. Я установил предыдущее значение null, когда он указывает на себя перед отправкой объекта. В другом конце, после получения объекта, измените предыдущее на себя, если оно равно null. Может быть, у кого-то есть лучшая идея. –