2015-11-14 83 views
1

我有一個indexed財產name一個下面的Spring數據的Neo4j(3.4.0.RELEASE)實體:SDN Neo4j的Cypher支架的情況下insensetive查詢

@NodeEntity 
public class Decision { 

    @Indexed 
    private String name; 
    .... 

我需要name屬性格式來實現不區分大小寫的搜索。

在我DecisionRepository我創建了以下方法:

@Query("MATCH (d:Decision) WHERE d.name =~ '(?i){name}' RETURN d") 
Decision findByNameIgnoreCase(@Param("name") String name); 

但在運行後我得到一個以下異常:

org.springframework.dao.InvalidDataAccessApiUsageException: Illegal repetition near index 3 
(?i){name} 
    ^; nested exception is java.util.regex.PatternSyntaxException: Illegal repetition near index 3 
(?i){name} 
^

如何實現在name屬性正確區分大小寫的搜索?

回答

2

我知道這是一個有點棘手,但你可以做到這一點的註釋使用此查詢我想:如果同時設置你的名字(參數和值),以降低

MATCH (d:Decision) WHERE LOWER(d.name) = LOWER({name}) RETURN d 

,情況不物。

做的正是你想要的(正則表達式匹配)是什麼,你必須使用//:

MATCH (d:Decision) WHERE d.name =~ /(?i){name}/ RETURN d 

讓我知道,如果它的工作原理。

+0

感謝,與'LOWER'功能,它的作品就像一個魅力! – alexanoid