我想用密码搜索,
我的密码是
@Query("MATCH (movie:Movie) WHERE movie.title =~ '.*{0}.*' RETURN movie")或
@Query("MATCH (movie:Movie) WHERE movie.title =~ '(?i).*{0}.*' RETURN movie")这两种方法都不起作用:它返回forrest、sky、sky1、sky2,不管我搜索什么(forrest或sky)。怎么啦?控制器
@RequestMapping(value = "/movies", method = RequestMethod.GET, headers = "Accept=text/html")
public String findMovies(Model model, @RequestParam("q") String query) {
if (query != null && !query.isEmpty()) {
List<Movie> movies = movieRepository.findByTitleLike("(?i).*sky.*");
model.addAttribute("movies", IteratorUtil.asCollection(movies));
} else {
model.addAttribute("movies", Collections.emptyList());
}
model.addAttribute("query", query);
return "movies/list";
}发布于 2015-04-09 09:07:55
我最后一次执行正则表达式匹配是在以前版本的Neo4j中,当时您不能以这种方式使用参数来构造正则表达式。{0}不会被转换。相反,您应该将查询更改为:
@Query("MATCH (movie:Movie) WHERE movie.title =~ {0} RETURN movie")
List<Movie> findByTitleLike(String like)用以下方式称呼它:
myMovieRepository.findByTitleLike("(?i).*sky.*")https://stackoverflow.com/questions/29505787
复制相似问题