У меня есть отдельная база данных Neo4j 2.1.6. Я начал с веб-проекта Spring Spring и добавил Spring Data Neo4j 3.2.1 Release. Я пытаюсь отобразить узлы внутри пути. Я хотел бы иметь возможность вытащить дерево неопределенной глубины и сопоставить его с объектами java.Spring Data Neo4j Entity Path mapping
этот запрос:
match p=(a:fakea)-[*]->(:fakeb) where a.aId = 1
return p;
возвращает два пути:
{"start":"http://localhost:8180/db/data/node/593222","nodes":["http://localhost:8180/db/data/node/593222","http://localhost:8180/db/data/node/593223","http://localhost:8180/db/data/node/593224","http://localhost:8180/db/data/node/593225"],"length":3,"relationships":["http://localhost:8180/db/data/relationship/2489542","http://localhost:8180/db/data/relationship/2489543","http://localhost:8180/db/data/relationship/2489544"],"end":"http://localhost:8180/db/data/node/593225"}
{"start":"http://localhost:8180/db/data/node/593222","nodes":["http://localhost:8180/db/data/node/593222","http://localhost:8180/db/data/node/593223","http://localhost:8180/db/data/node/593226","http://localhost:8180/db/data/node/593227"],"length":3,"relationships":["http://localhost:8180/db/data/relationship/2489542","http://localhost:8180/db/data/relationship/2489545","http://localhost:8180/db/data/relationship/2489546"],"end":"http://localhost:8180/db/data/node/593227"}
Я попытался отображения его несколько различных способов, используя информацию, которую я нашел здесь:
Spring data wth ne04j error...error while retrieving paths
@Query shortestPath return type in Spring Data Neo4j
Мой текущий репозиторий:
public interface FakeRepository extends GraphRepository<FakeA> {
@Query("match p=(a:fakea)-[*]->(:fakeb) where a.aId = {0} return p;")
public EntityPath<FakeA, FakeB> getTree(Long aId);
Я также попытался создать общий абстрактный класс:
public interface FakeRepository extends GraphRepository<FakeAbs> {
@Query("match p=(a:fakea)-[*]->(:fakeb) where a.aId = {0} return p;")
public EntityPath<FakeAbs, FakeAbs> getTree(Long aId);
Я не могу получить какие-либо полезные данные. Я также не могу найти класс EndResult, упомянутый в опубликованных вами сообщениях. Я также попробовал обернуть EntityPath с результатом (также в репо).
Result<EntityPath<FakeAbs, FakeAbs>> path = fr.getTree(1l);
EntityPath<FakeAbs, FakeAbs> first = path.iterator().next();
first.endNode();
поднимает:
Null pointer:
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at org.springframework.data.neo4j.support.path.ConvertingEntityPath.endNode(ConvertingEntityPath.java:112)
Я получаю подобные пустые указатели при попытке исследовать любые другие части конструкции EntityPath (длина(), например).
Как я могу обработать структуру дерева с различной глубиной и отобразить результаты в правильные узловые объекты? Я специально хочу, чтобы узлы содержались в пути.
Вы пытаетесь получить информацию о Пути или хотите определить определенные узлы в пути? –
Я пытаюсь получить конкретные узлы в пути. Я буду редактировать свой оригинальный вопрос для ясности. – jake
Перейти к этой ссылке для решения: https://stackoverflow.com/questions/32962032/how-do-i-query-for-paths-in-spring-data-neo4j-4?rq=1 – joe