#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