Вызов циклической рекурсии в neo4j

#spring #neo4j #spring-data-neo4j #neo4j-ogm

#spring #neo4j #spring-data-neo4j #neo4j-ogm

Вопрос:

Я пытаюсь ввести несколько узлов графа в neo4j db, используя spring-data-neo4j.

Узлы имеют следующие отношения.

Project -> Cluster -> Entity -> Methods и узел объекта имеет связь со своим ownn, что делает его двунаправленным отношением.

Класс сущности определяется следующим образом.

 @JsonIdentityInfo(generator =  ObjectIdGenerators.PropertyGenerator.class, 
property = "id")
@NodeEntity
public class Entity {
        public int id;
        public String type;
        public String name;
        public String entityId;
        Public String projectId;
        @Relationship(type = "CONNECTS_TO", direction = Relationship.INCOMING)
        private Set<Entity> entityIdr;

    }
  

При попытке вставить узлы кластера и сущности выдается ошибка, приведенная ниже, какое может быть возможное решение, чтобы избежать следующего?

com.fasterxml.jackson.databind.Исключение JsonMappingException: бесконечная рекурсия (StackOverflowError) (через цепочку ссылок:

Комментарии:

1. private Set<Entity> entityIdr; Не вызывает ли это циклическую рекурсию?

Ответ №1:

Я предполагаю, что вы пытаетесь сериализовать данные и предоставить их на веб-уровне или аналогичном, верно? Сериализации Джексона необходимо получить больше информации о том, как разбить циклы, описанные в модели данных Java. Так что либо вы игнорируете свойство с @JsonIgnore подобным

 @JsonIgnore
@Relationship(type = "CONNECTS_TO", direction = Relationship.INCOMING)
private Set<Entity> entityIdr;
  

, но это кажется, по крайней мере, для первого уровня, как потеря информации,
или

 @JsonIgnoreProperties("entityIdr")
@Relationship(type = "CONNECTS_TO", direction = Relationship.INCOMING)
private Set<Entity> entityIdr;
  

Мы написали это в документации для Neo4j-OGM: https://neo4j.com/docs/ogm-manual/current/reference/#_a_note_on_json_serialization