Direkte Selbstreferenz, die zu einer Zyklusausnahme führt

Ich habe so etwas Klasse

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;
  }

}

Und eine Klasse, die die Klasse darüber erweitert

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();
  }

}

Jetzt habe ich ein Objekt vom Typ DailyActivity und wenn ich versuche, es in einen JSON-String zu konvertieren, erhalte ich die folgende Ausnahme:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.pr.analysis.DailyActivity["previous"])

Ich habe auf Google nach einer Lösung gesucht, aber die Lösung, die ich erhalte, fordert dazu auf, jsonIgnore auf den vorherigen Wert zu setzen, was nicht meine Absicht ist. Hat jemand das gleiche Problem konfrontiert? Vielen Dank

BEARBEITEN Ich weiß, dass es in der Klasse einen Zyklus gibt, und ich frage mich, wie ich die Klasse deserialisieren soll, die einen Selbstbezug hat.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage