【问题标题】:how to get the relationship from Collection of relationships between two nodes using springdata Neo4j with GraphRepository如何使用带有 GraphRepository 的 springdata Neo4j 从两个节点之间的关系集合中获取关系
【发布时间】:2016-03-04 02:05:29
【问题描述】:

我有两个实体,例如用户和帐户。与Account节点相关的用户节点 与 20 种关系中的任何一种。请在附件中找到示例图像设计

我需要使用 20 种关系中的任何一种来搜索相应用户的帐户。我使用密码查询来检索用户详细信息和帐户。这两个实体之间的关系将是 20 种关系中的任何一种。所以我不能注释 @RelationshipEntity 类型值。请查找代码示例 用户.java

public class User
{ 
    private Long id;    
    String fulltextsearch;   

    String user_id; 

    String status; 

     @Relationship(type = "perm")
     List<Acronym> acronym;
     .....
         ...    
}

Acronym.java

@JsonIdentityInfo(generator=JSOGGenerator.class)
@RelationshipEntity
public class Acronym {
@GraphId
    Long id;
    String acronym;
    @StartNode
    private User user;
    @EndNode
    private Account account;
....
....
}

Userrepository.java

@RepositoryRestResource(collectionResourceRel = "User", path = "User")
public interface Userrepository extends GraphRepository<User> { 
    User findByLogin(@Param("login") String login);

    @Query("MATCH p=(user:User)-[r*0..1]->(account) WHERE user.login =~('(?i).*'+{Login}+'.*') RETURN p")
    Collection<User> findByloginContaining(@Param("login") String login);
}

我尝试为每个关系创建对象(即 20 个关系对象。)。我不确定这是否是获得价值的正确方法。 任何人都可以帮我了解获取与帐户的关系吗?它总是返回为空。

提前致谢。

【问题讨论】:

    标签: neo4j spring-data-neo4j-4 neo4j-ogm


    【解决方案1】:

    OGM/SDN 4 不支持未知关系类型。关系类型必须在@RelationshipEntity 中指定。

    这样做的一种方法是,如您所说,为每种类型创建一个 @RelationshipEntity,但这也意味着您必须在 User 类中指定 20 个此类关系,因为关系类型不同(即使开始/结束节点是相同)。这可能并不理想,而且难以管理。

    如果您的应用程序主要使用动态关系类型,则 OGM 可能不适合。

    注意:仅 OGM 2.x / SDN 4.1 支持将自定义查询结果映射到实体。您不能返回路径,只能返回构成路径的实体,例如节点和 rel。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多