2016-06-28 6 views
0

名前のリストを入力として受け取り、深さが1の特定のラベルを持つすべてのノードを返します。SDN 4深さのプロパティリストによるクエリ1

たとえば

Set<Person> findAllByName(Set<String> names) 

が名すべての直接の子ノードを含む「名前」に設定しているすべての者を含むセットを返す必要があります。

私はちょうどこれは何とか仕事に取得したい、カスタムクエリ、フィルタまたは何かを書くに開いています。

私はすでにNeo4jOperations.loadAllByPropertiesを使用してカスタムリポジトリの実装を書いてみましたが、私は、リストに対して一致するフィルタを作成する方法を見つけ出すことはできません。

おかげで、 アレックス

答えて

1

あなたのリポジトリに次のようなCYPHERクエリを使用することができます。

@Query("MATCH (a:Person) "+ 
     "WHERE a.personId IN {0} " + 
     "RETURN a ") 
List<Person> getPersonList(Set<String> personSet); 

それからちょうどあなたのコントローラ内のリポジトリのクエリを呼び出す:

List<Person> listPerson = personRepository.getPersonList(names); 

を編集します。Personの関係にも入力する必要があるので、次のような仕事は、thisに基づいてブログエントリ:

@Query("MATCH (a:Person) "+ 
     "WHERE a.personId IN {0} "+ 
     "WITH a "+ 
     "MATCH p=(a)-[r*0..1]-()"+ 
     "RETURN a, nodes(p), rels(p)") 
List<Person> getPersonList(Set<String> personSet); 
+0

それは奥行きの部分を処理しません。すべての関係に人口(深さ1)を持たせるために、応答のPersonsが必要です –

+0

正しいです。 [this](http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html)のブログ記事の 'すべての関連エンティティをマップする 'セクションに基づいて、おそらく私の編集がうまくいくでしょう。残念ながら、私は現時点でそれをテストすることはできません。 – Sevle

関連する問題