У меня проблемы с частью моего проекта, который использует spring-data-neo4j. У меня есть узел класса сущностей:Spring Data Neo4j репозиторий, возвращающий пустую коллекцию
@NodeEntity
@TypeAlias("Ad")
public class Ad{
@GraphId
private Long nodeId;
@Indexed(indexName = "adId", unique = true)
private Long id;
@Fetch
@RelatedTo(type="CONTAINS", direction = Direction.OUTGOING)
private Collection<Keyword> keywords;
...
И хранилище для него такими методами:
@Query(value = "START ad1=node({adv}) MATCH ad1-[r1:CONTAINS]->Keyword<-[r2:CONTAINS]-similar RETURN similar SKIP {param_offset} LIMIT {param_limit}")
Iterable<Ad> findSimilarAds(@Param("adv") Ad advertising, @Param("param_limit") int limit, @Param("param_offset") int offset);
@Query(value = "START ad1=node:adId(id={p_id}) MATCH ad1-[r1:CONTAINS]->Keyword<-[r2:CONTAINS]-similar RETURN similar SKIP {param_offset} LIMIT {param_limit}")
Iterable<Ad> findSimilarAdsById(@Param("p_id") Long id, @Param("param_limit") int limit, @Param("param_offset") int offset);
, а затем проверить, что делать только что-то вроде этого:
создания ключевых слов 1, создайте Ключевое слово 2 - ok
создать узел объявлений с идентификатором 123456, содержащий ключевое слово 1 и ключ ога 2 - ок
создать узел объявлений с ID 654321, содержащий ключевое слово 1 - ОК
прибудете объявление с идентификатором 654321 - работает нормально, генерируется запрос:
START
ad
= узел:adId
(id
= {0}) RETURNad
PARAMS {0 = 654321}получить аналогичные объявления с findSimilarAds() и аргументом является объявлением из предыдущего шага - хорошо работает, он возвращает объявление с идентификатором 123456, сгенерированный запросом:
START ad1 = node ({adv}) MATCH ad1- [r1: CONTAINS] -> Ключевое слово < - [r2: CONTAINS] - аналогично RETURN аналогично SKIP {param_offset} LIMIT {param_limit} params {param_offset = 0, param_limit = 10, adv = 48}
после этого получить похожие объявления с помощью метода findSimilarAdsById() - аргумент id равен 654321L. Результат запроса выглядит следующим образом:
START AD1 = узел: Адид (ID = {P_ID}) MATCH ad1- [r1: СОДЕРЖИТ] -> Ключевое слово < - [г2: СОДЕРЖИТ] -similar RETURN аналогичный SKIP {} param_offset ЛИМИТ {param_limit} {PARAMS param_offset = 0, P_ID = 654321, param_limit = 10}
Но он возвращается пустой экземпляр org.springframework.data.neo4j.conversion.QueryResultBuilder (я пытаюсь пытается получить элементы с итератором) вместо коллекции Iterable с объявлением 123456. Я пробовал почти все, что мог придумать, с любым успехом, я пропустил что-то важное?
Версия:
- пружинных данные Neo4j 2.3.3.RELEASE
- Neo4j-монограмма-1,8 DSL
- весна материал 3.1.4.RELEASE
- весна-данные neo4j- аспекты 2.3.2.RELEASE
Решения с «числовыми = ложью» работал. Спасибо. – xc0