我发现我的SDN设置有一个奇怪的问题(可能)。我从Neo4j浏览器控制台执行的cypher查询返回2个节点-
MATCH (bk:Book) WHERE bk.bookTitle =~ '(?i).*robert.*' OR bk.authors =~ '(?i).*robert.*' return bk;以上是我所期望的。
然而,当我在我的存储库的一个搜索方法的查询注释中使用相同的查询时,SDN倾向于获取存储库中的所有节点-以下是我在存储库i/f中的方法:
@Query("MATCH (bk:Book) WHERE bk.bookTitle =~ '(?i).*{0}.*' OR bk.authors =~ '(?i).*{0}.*' return bk;")
...
public Iterable<Book> searchBooksByProfileData(String keyword);
....更多细节- 1.我使用SDN - 3.4.0发布版本,我的服务器是v2.1.6。2.我的测试用例似乎使SDN在我验证我的日志时触发了正确的查询。
只是想知道这是怎么发生的-我遗漏了什么,或者来自最新服务器的REST i/f不能正确解释来自旧SDN客户端的请求?
发布于 2015-10-26 23:41:53
这部分
'(?i).*{0}.*'作为正则表达式,其中{0}是出现次数。您需要在参数中传入整个正则表达式:
WHERE bk.bookTitle =~ {0}其中{0}将具有值"(?i).*robert.*";
https://stackoverflow.com/questions/33213889
复制相似问题