Spring данные с ne04j error... ошибка при поиске путей

Я использовал данные весны с neo4j.

я использовал @Query аннотация для размещения запроса в хранилище, запрос был следующим

@Query(value = "START me=node({0}), friend=node({1}) "
            + "MATCH p=shortestPath(me-[:ACTIVEFRIEND*..]->friend)"
            + " RETURN p")

public Iterable<EntityPath<User, User>> getShortestPathBetween(User a, User b);

В контроллере я получаю к нему доступ как

 Iterable<EntityPath<User, User>> shortestPathBetween = this.queryService.getShortestPathBetween(user, friend);
        for (EntityPath<User, User> path : shortestPathBetween) {
            Iterator<User> iter = path.<User>nodeEntities().iterator();
        }

Когда он пытается получить доступ path.nodeEntities, это вызывает эту ошибку:

Вложенное исключение - java.lang.NullPointerException] с основной причиной
java.lang.NullPointerException
в org.springframework.data.neo4j.support.path.ConvertingEntityPath.nodes(ConvertingEntityPath.java:137)
в org.springframework.data.neo4j.support.path.ConvertingEntityPath.nodeEntities(ConvertingEntityPath.java:69)
в com.laindain.cms.controller.QueryController.getShortestPathBetween (QueryController.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.intaho.jf.jj.invoke(Method.java:601) по адресу org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) по адресу org.springframework.web.method.support.InvochohoHand) в org.springframework.) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) в org.springframework.web.servlet.mvc.method.AbstractHandlerMethod dapter.handle(AbstractHandlerMethodAdapter.java:80) в org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) в org.springframework.web.servlet.DispatcherServlet.js: orglet.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) в org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) в javax.servlet.ttperv.htpv.:647) в javax.servlet.http.HttpServlet.service(HttpServlet.java:728) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) в org.apache.Chapp.doFilter(ApplicationFilterChain.java:210) в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) в org.apache.catalina.core.StandardContextValve.invoke(StandardConteg):.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) в org.apache.catalina.valke.AccessLavin.Lave(AccessLogValve.java:936) в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407. Org или coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) в org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) в org.apache.tomcat.util.net.AunPrond $ AprEndpoint.java:1822) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) в java.lang.Thread.run(Thread.java:722)

Я буду признателен, если кто-то может помочь мне в этом.

Спасибо, Хемант

1 ответ

Попробуйте определить метод следующим образом:

public EndResult<EntityPath<User, User>> getShortestPathBetween(User a, User b);

так как запрос возвращает путь, а не набор путей. Вы можете получить результат следующим образом:

EntityPath<User, User> shortestPathBetween =
this.queryService.getShortestPathBetween(user, friend).to(EntityPath);

Затем к узлам и отношениям на пути можно получить доступ, используя методы nodeEntities() и relationsEntities () в возвращенном EntityPath.

Другие вопросы по тегам