【问题标题】:Spring data query to neo4j querySpring数据查询到neo4j查询
【发布时间】:2016-08-23 06:20:09
【问题描述】:

我是 Neo4j 的初学者,我想将 Spring 数据查询转换为 Neo4j 查询。

我有三张桌子。

@RelationshipEntity(type = "IS_ATTENDING_EVENT")
public class IsAttendingEventDO {

    @GraphId
    private Long id;
    @Property
    private String isAttendingEventId;
    @StartNode
    private PersonDO personDO = new PersonDO();
    @EndNode
    private EventDO eventDO = new EventDO();


@NodeEntity(label="Person")
public class PersonDO {  

    @GraphId Long id;
    @Property
    private String personId;
    @Property
    private String name; 


@NodeEntity(label="Event")
public class EventDO {

    @GraphId
    private Long id;
    @Property
    private String eventId;

这是我的 spring-data 查询。

IsAttendingEventDO getByEventEventIdAndPersonPersonId(String eventId, String personId); 

请帮我将此查询转换为 Neo4j 查询。

问候, 帕思·索兰基。

【问题讨论】:

    标签: java spring neo4j spring-data spring-data-neo4j


    【解决方案1】:

    我认为您应该通读 Neo4j developers manual 并了解 Cypher 的语法和用法。

    有了对 Cypher 的基本了解,这是一个非常简单的查询。只需匹配您感兴趣的模式(参加活动的人,使用已定义的标签),提供有关人员、事件和关系的变量,添加 WHERE 子句以限制匹配中的人员和事件到给定的 id 参数,然后返回适合这些谓词应用的匹配模式的关系:

    MATCH (p:Person)-[rel:IS_ATTENDING_EVENT]->(e:Event)
    WHERE p.id = {personId} AND e.id = {eventId}
    RETURN rel
    

    编辑:

    回答您关于返回关系列表(参加 :Event 的人)的评论,其中唯一给定的参数是 eventId。

    要从节点形成列表,您可以使用 COLLECT() 函数。

    因此,如果您尝试仅基于 eventId 获取关系,则无需在 :Person 节点上提供变量,因为您没有任何谓词可应用于它,而且您是'不使用它或返回它。您感兴趣的只是参加活动的人员与给定 eventId 的关系,并返回这些返回关系的集合。

    MATCH (:Person)-[rel:IS_ATTENDING_EVENT]->(e:Event)
    WHERE e.id = {eventId}
    RETURN COLLECT(rel)
    

    再次,请通读开发者手册,并使用Cypher refcard 来帮助您。阅读基本文档后,您提出的这类问题很容易解决。

    【讨论】:

    • 您好,感谢您的回答。我会试试这个,让你知道......而且我还有另一个查询 List findByEventEventId(String eventId);所以在这个它返回一个列表,那么我该如何进行这个查询?
    • 已答复。有机会时请通读文档,这应该可以帮助您解决关于将 Spring 数据查询转换为 Cypher 的大多数其他问题;虽然没有明确的转换指南,但它应该变得直观,具体取决于您正在寻找的模式和可用的参数。
    猜你喜欢
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多