弹簧数据neo4j @Query按关系类型

时间:2016-12-06 21:50:58

标签: neo4j spring-data-neo4j-4

我需要通过关系类型

查询neo4j

这是我的实体类

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

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

我需要找到关系类型为“RECOMMENDS”的所有节点 是否有默认的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);
}

有人可以解释一下。

由于

1 个答案:

答案 0 :(得分: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(); }