У меня ошибка StackOverflowError, когда я пытаюсь отобразить данные из neo4j в данные Spring. Проект использует Lombok.
Я могу получить Проект только с одним Использованием, которое работало нормально. Но для Проекта с двумя или более использованием возникает ошибка.
Кто-нибудь может помочь? Спасибо.
Ошибка:
Resolved exception caused by Handler execution: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
Проект. java
@NodeEntity
@Data
//@JsonIgnoreProperties({"project","use"}) //also tried but same issue
public class Project {
@Id
private String id;
@Nullable
private String name;
@JsonIgnoreProperties({"project","use"})
@Relationship(type = "USED_FOR")
List<ProjectUseRelation> usedFor = new ArrayList<>();
}
Использование. java
@NodeEntity
@Data
//@JsonIgnoreProperties({"project","use"}) //also tried but same issue
public class Use {
@Id
private String id;
@Nullable
private String name;
@JsonIgnoreProperties({"project","use"})
@Relationship(type = "USED_FOR", direction = Relationship.INCOMING)
List<ProjectUseRelation> usedByProjects = new ArrayList<>();
}
ProjectUseRelation. java
@RelationshipEntity(type = "USED_FOR")
@Data
public class ProjectUseRelation {
@Id
private Long id;
@Nullable
private String name;
@StartNode
@JsonIgnoreProperties({"usedFor"})
private Project project;
@EndNode
@JsonIgnoreProperties({"usedByProjects"})
private Use use;
}
Служба. java
@Service
@AllArgsConstructor
public class Service{
private final Repository repository;
@Transactional(readOnly = true)
public Map<String, Object> graph(String id){
//system correctly reached here
Collection<Project> result = repository.graph(id);
//system can't reach here
return result;
}
}
Репозиторий. java
public interface Repository extends Neo4jRepository<Project,String>{
@Query("MATCH map = (p:Project)-[]-(u:Use) WHERE p.id = {id} RETURN map")
Collection<Project> graph(@Param("id") String id);
}
Теперь это может вернуть меня один / несколько раз в отношения один-один, но не один-один-ко-многим.