В моем коде Java у меня есть запрос, чтобы соответствовать кратчайшему пути от корня до листа в моем дереве.Neo4j-ogm query path
Strinq query = "Match path = (p:Root)-[*1..100]-(m:Leaf) "
+ "WITH p,m,path ORDER BY length(path) LIMIT 1 RETURN path";
Однако, когда я пытаюсь запросить это следующим образом
SessionFactory sessionFactory = new SessionFactory("incyan.Data.Neo4j.Models");
Session session = sessionFactory.openSession("http://localhost:7474");
Object o = session(query, new HashMap<String,Object>());
o
содержит ArrayList
из LinkedHashMap
с вместо отображаемых объектов.
Я даже не могу определить метки элементов пути и начального и конечного узлов отношений.
Что я делаю неправильно?
>> но если вы используете функцию shortestPath ... Thanx много. Изменит мой запрос. >>> Я не знаю, как выглядит ваша модель данных, но я бы ожидал ярлыки на узлах вашего дерева ... Nope. В моем дереве есть один корневой элемент, отмеченный меткой «Root». Все остальные узлы имеют метки либо «Лист», либо «BranchBase». Если я выполняю запрос в web-интерфейсе neo4j, он вернет правильный путь. Моя проблема связана с библиотекой neo4j-ogm java. Он не отображает возвращенные объекты в мои объекты Java, определенные как описано здесь: http://neo4j.com/docs/ogm/java/stable/ – Vahagn
Вместо этого session.query() возвращает 'ArrayList'' LinkedHashMap' s. – Vahagn
Ах, справедливо. Я позволю кому-то еще ответить на вопрос Java OGM;) Кроме того, если вы не знаете, узлы в Neo4j могут иметь несколько ярлыков, поэтому, если вы хотите пометить некоторые узлы как 'Root' /' Leaf', вы можете также есть еще один ярлык, который охватывает все их для различной ситуации запросов. –