2016-11-05 7 views
3

私はneo4jの春データに新しく、クエリは私の春の起動アプリケーションでは動作しないようにしようとしていますが、neo4j Webインターフェイスで作業しています。春データneo4j LIKEクエリが機能しない

私は3つのデータベース上のノードがあります。 "オラクル"、 "ジャワ" と "クラウド" 私が実行しようとしているクエリ:

MATCH(interest:Interest) WHERE interest.name =~ '(?i).*cl.*' RETURN interest 

ので、のNeo4jのWebインタフェースを使用して、I場合を"cl"を置くと "oracle"と "cloud"が返されます。これは正しいです。

スプリングデータを使用すると、3つの結果がすべて得られますが、これは間違っています。

マイリポジトリインタフェース:

@Query("MATCH(interest:Interest) WHERE interest.name =~ '(?i).*{0}.*' RETURN interest") 
Set<Interest> getKindOf(String value); 

私の残りのコントローラ:

@ResponseBody 
public Collection<Interest> getPersonByName(@PathVariable String name) { 
    Set<Interest> interests = interestRepository.getKindOf(name); 
    return interests; 
} 

iは、クエリを見ることができる春のブートのログを確認する:

INFO 12716 --- [nio-2016-exec-1] o.n.o.drivers.http.request.HttpRequest : Thread: 22, url: http://localhost:7474/db/data/transaction/commit, request: {"statements":[{"statement":"MATCH(interest:Interest) WHERE interest.name =~ '(?i).*{0}.*' RETURN interest","parameters":{"0":"cl"},"resultDataContents":["graph"],"includeStats":false}]} 

だから、質問は:なぜ私はneo4jウェブインターフェイス(OK)と3つの結果を使用して2つの結果を取得するスプリングデータ(NOK)を使用して?

ありがとうございました!

ロドリゴ

答えて

4

完全な正規表現は、引数(別名サイファークエリパラメータ)として渡されるべき

@Query("MATCH(interest:Interest) WHERE interest.name =~ {0} RETURN interest") 
Set<Interest> getKindOf(String value); 

-

@ResponseBody 
public Collection<Interest> getPersonByName(@PathVariable String name) { 
    String regex = "(?i).*" + name + ".*"; 
    Set<Interest> interests = interestRepository.getKindOf(regex); 
    return interests; 
} 

注これは取り扱いサイファー・パラメータに関係しています、これはsdnに固有ではありません

+0

ありがとうたくさんのクリストフがログを見て、それは理にかなっています。それは今働いている。乾杯! – rodrigocoelho

+2

次のバージョンのSpring Data Neo4jは、findPropertyByRegexを含む追加の派生ファインダをサポートします –

関連する問題