2016-12-06 2 views
0

мне нужно запросить Neo4j по типу отношенийпружинные данные Neo4j @Query по типу отношений

это мой Entity класс

@NodeEntity 
@Getter 
@Setter 
@NoArgsConstructor 
public class ProductRecommendation { 
    @GraphId 
    private Long id; 

    String product; 
    @Relationship(type = "RECOMMENDS", direction = Relationship.OUTGOING) 
    Set<ProductRecommendation> linkedProducts = new HashSet<>(); 
} 

Мне нужно найти все узлы с типом отношений, как «РЕКОМЕНДУЕТ».
Есть ли метод findBy по умолчанию?
Я пытался с этим, и он работает

public interface ProductRecommendationRepository extends GraphRepository<ProductRecommendation> { 
    @Query("MATCH p=()-[r:RECOMMENDS]->() RETURN p") 
    List<ProductRecommendation> findByRelationShipType(); 
} 

однако, если я прохожу тип отношений как переменная, она не работает

public interface ProductRecommendationRepository extends GraphRepository<ProductRecommendation> { 
    @Query("MATCH p=()-[r:{0}]->() RETURN p") 
    List<ProductRecommendation> findByRelationShipType(String type); 
} 

Может кто-то пожалуйста, объясните.

Благодаря

ответ

0

Тип отношения не могут быть заданы (см http://neo4j.com/docs/developer-manual/current/cypher/#cypher-parameters).

так что вам придется идти с

public interface ProductRecommendationRepository extends GraphRepository<ProductRecommendation> { @Query("MATCH p=()-[r:RECOMMENDS]->() RETURN p") List<ProductRecommendation> findByRelationShipType(); }

+0

Я думаю, что можно было бы использовать в качестве временного решения: '@Query (" MATCH р =() - [г] ->(), где тип (г) = {0} RETURN p; ")' \t 'public List findByRelationShipType (final String type);' –

Смежные вопросы