0
私はこのようになりますエンティティを持っている:SDN4では、neo4jOperations.queryForObjectsは空のコレクションを持つエンティティを返します。の解き方?
String q = "MATCH (u:User) WHERE u.male=true RETURN u";
Iterable<User> maleUsers = neo4jOperations.queryForObjects(User.class, q, emptyMap());
しかし、それは友人やイベントの空のコレクションを持つユーザーを返します。私は、次のコードを使用する男性ユーザーを照会するために
@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 WITH u MATCH p=(u)-[*0..1]-() RETURN p";
Iterable<User> maleUsers = neo4jOperations.queryForObjects(User.class, q, emptyMap());
そして今コレクションが初期化されています。私は、次のコードを持って問題を解決しようとすると
。
- このコードは、返すように意図されています:唯一の男性ユーザー しかし、実際にはそれが返されます。しかし、この変更は、新たな問題がもたらし男性ユーザーとユーザー、何とか男性ユーザーに関連し
方法私の問題を正しく解決するには?どのような考えは非常に感謝しています!
PS:私はSpring Data Neo4j 4.1.0.M1を使用しています。
あなたの答えをありがとう!良いアイデアのようだ。しかし、ラベルのないノードがあるので(実際はNeo4j Spatialルートノードです)、私にとってはうまくいきません。それが存在するため、RestModelMapperファイルでNPEが発生します。 'nodeModel.getLabels()'は前述のノードの空の配列を返します。この行には、次の式が含まれています: 'metaData.resolve(nodeModel.getLabels())。getUnderlyingClass()'そのため、 'metaData.resolve(nodeModel.getLabels())'はnullを返します。そして、それは失敗します...私はこれで何ができますか? –
残念ながら、これはバグです。私はhttps://github.com/neo4j/neo4j-ogm/issues/150を開いて追跡することができ、できるだけ早く修正されます。それを報告してくれてありがとう。 – Luanne
努力のために大きな感謝!私は問題を追跡します。 –