Как я могу получить все отношения из базы данных (spring-data-) neo4j? - PullRequest
0 голосов
/ 02 декабря 2011

Есть ли способ просто извлечь все связи определенного типа - где тип является аннотированным классом @RelationshipEntity - из базы данных spring-data-neo4j [SDN]? (работает с 2.0.0.RC1 и встроенной БД)

Когда я пробую метод, предоставленный SDN:

relationShipRepository.findAll()

выдает следующую ошибку:

org.neo4j.graphdb.NotFoundException: __type__ property not found for RelationshipImpl #9672 of type 7 between Node[4844] and Node[4875].

Полная трассировка стека: http://pastebin.com/j2gqcjxh (хотя смотрит

Решением было бы использование API низкого уровня (neo4j) (а именно GraphDatabaseService) для получения всех узлов, а затем для каждого узла получить все их отношения и проверить, соответствует ли их поле __type__ типу отношения I меня интересует. Но тогда зачем предоставлять findAll метод для отношений?

Простое объяснение состоит в том, что рекомендуемый интерфейс одинаков для узлов и отношений - но есть ли в документации, что нам не разрешено использовать findAll для отношений?

Или: при изучении сущности отношения в БД, это противоречит исключению, поскольку тип определен правильно, как и ожидалось, и можно получить связь через API высокого уровня (SDN) после извлечения узла и вы звоните getRelationship*(..)

С другой стороны: кто-нибудь знает, будет ли услуга ImpermanentDataGraph включена в v 2 +?

1 Ответ

2 голосов
/ 02 декабря 2011

Вы ищете отношения, созданные как Отношения-сущности в SDN, или все отношения?

Какой у вас сценарий использования?

Отношения-субъекты также добавляются в индекс. Является ли отношение 9672 отношением-сущностью?

Для хранилища отношений - который зависит от TypeRepresentationStrategy, если используется «индексированная стратегия», отношения отношений также доступны в соответствующем хранилище (но не глобально).

В Neo4j 1.6.M01 есть новый класс [GlobalGraphOperations][1], который также имеет getAllRelationships().

ImpermanentGraphDatabase отсутствует в наборе инструментов для тестирования Neo4j. И он останется там (и улучшится в производительности) в v2 +.

...