在 SDN4 neo4jOperations.queryForObjects returns 中具有空集合的实体。怎么解决?
In SDN4 neo4jOperations.queryForObjects returns entities with empty collections. How to solve?
我有实体,看起来像这样:
@NodeEntity
class User {
String name;
boolean male;
<...>
@Relationship(type = "friend")
Set<User> friends;
@Relationship(type = "participation")
Set<Event> events;
<...>
}
为了查询男性用户我使用了下面的代码:
String q = "MATCH (u:User) WHERE u.male=true RETURN u";
Iterable<User> maleUsers = neo4jOperations.queryForObjects(User.class, q, emptyMap());
但它 return 的用户的好友和事件集合为空。
试图解决问题我得到了以下代码:
String q = "MATCH (u:User) WHERE u.male=true WITH u MATCH p=(u)-[*0..1]-() RETURN p";
Iterable<User> maleUsers = neo4jOperations.queryForObjects(User.class, q, emptyMap());
现在集合已初始化。但是这个改动带来了一个新的问题:
- 此代码适用于return:仅限男性用户
- 但实际上它returns:男性用户和用户,某种程度上与男性用户有关
如何正确解决我的问题?非常感谢任何想法!
PS: 我使用 Spring Data Neo4j 4.1.0.M1.
这是因为您 return 一条包含许多用户实体的路径,而 OGM 无法判断您要返回哪一个。
最好的方法是使用 session.query
:
Result result = session.query("MATCH (u:User) WHERE u.male=true WITH u MATCH p=(u)-[*0..1]-() RETURN u as user, nodes(p),rels(p)",emptyMap());
然后从 result
中检索每个 user
,其中将映射朋友和事件。
我有实体,看起来像这样:
@NodeEntity
class User {
String name;
boolean male;
<...>
@Relationship(type = "friend")
Set<User> friends;
@Relationship(type = "participation")
Set<Event> events;
<...>
}
为了查询男性用户我使用了下面的代码:
String q = "MATCH (u:User) WHERE u.male=true RETURN u";
Iterable<User> maleUsers = neo4jOperations.queryForObjects(User.class, q, emptyMap());
但它 return 的用户的好友和事件集合为空。
试图解决问题我得到了以下代码:
String q = "MATCH (u:User) WHERE u.male=true WITH u MATCH p=(u)-[*0..1]-() RETURN p";
Iterable<User> maleUsers = neo4jOperations.queryForObjects(User.class, q, emptyMap());
现在集合已初始化。但是这个改动带来了一个新的问题:
- 此代码适用于return:仅限男性用户
- 但实际上它returns:男性用户和用户,某种程度上与男性用户有关
如何正确解决我的问题?非常感谢任何想法!
PS: 我使用 Spring Data Neo4j 4.1.0.M1.
这是因为您 return 一条包含许多用户实体的路径,而 OGM 无法判断您要返回哪一个。
最好的方法是使用 session.query
:
Result result = session.query("MATCH (u:User) WHERE u.male=true WITH u MATCH p=(u)-[*0..1]-() RETURN u as user, nodes(p),rels(p)",emptyMap());
然后从 result
中检索每个 user
,其中将映射朋友和事件。