如何使用带有GraphRepository的springdata Neo4j从两个节点之间的关系集合中获取关系
how to get the relationship from Collection of relationships between two nodes using springdata Neo4j with GraphRepository
我有两个实体,例如用户和帐户。与Account节点相关的User节点
与 20 种关系中的任何一种。请查找附件中的示例图像设计
我需要使用 20 种关系中的任何一种来搜索相应用户的帐户。我使用密码查询来检索用户详细信息和帐户。两个实体之间的关系将是 20 种关系中的任何一种。所以我无法注释 @RelationshipEntity 类型值。请找到代码例如
User.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 个关系对象)。我不确定这种获取价值的方法是否正确。
任何人都可以帮助我知道如何获取该帐户的关系吗?它总是检索为 null。
提前致谢。
OGM/SDN4 不支持未知关系类型。关系类型 必须 在 @RelationshipEntity 上指定。
如您所说,一种方法是为每个类型创建一个@RelationshipEntity,但这也意味着您必须在用户 class 中指定 20 个这样的关系,因为关系类型不同(即使start/end 节点相同)。这可能并不理想,而且难以管理。
如果您的应用程序主要使用动态关系类型,则 OGM 可能不太适合。
注意:仅 OGM 2.x / SDN 4.1 支持将自定义查询结果映射到实体。您不能 return 路径,只能是构成路径的实体,例如节点和 rels。
我有两个实体,例如用户和帐户。与Account节点相关的User节点 与 20 种关系中的任何一种。请查找附件中的示例图像设计
我需要使用 20 种关系中的任何一种来搜索相应用户的帐户。我使用密码查询来检索用户详细信息和帐户。两个实体之间的关系将是 20 种关系中的任何一种。所以我无法注释 @RelationshipEntity 类型值。请找到代码例如 User.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 个关系对象)。我不确定这种获取价值的方法是否正确。 任何人都可以帮助我知道如何获取该帐户的关系吗?它总是检索为 null。
提前致谢。
OGM/SDN4 不支持未知关系类型。关系类型 必须 在 @RelationshipEntity 上指定。
如您所说,一种方法是为每个类型创建一个@RelationshipEntity,但这也意味着您必须在用户 class 中指定 20 个这样的关系,因为关系类型不同(即使start/end 节点相同)。这可能并不理想,而且难以管理。
如果您的应用程序主要使用动态关系类型,则 OGM 可能不太适合。
注意:仅 OGM 2.x / SDN 4.1 支持将自定义查询结果映射到实体。您不能 return 路径,只能是构成路径的实体,例如节点和 rels。