2016-09-28 159 views
0

我有這樣的域對象春數據 - 蒙戈DB - 搜索

@Document(collection = "LabelsPredefined") 

公共類LabelsPredefined {

@TextIndexed 
private String name; 

public LabelsPredefined() { 
} 

public String getName() { 
    return name; 
} 

public void setName(final String name) { 
    this.name = name; 
} 

@Override 
public String toString() { 
    return "[LabelsPredefined]"; 
} 
} 

,我必須在與自動完成前端的輸入。因此,當用戶輸入第一個字符時,我將開始搜索。這是我的春節,數據存儲庫的方法:

@Query("{$text : { $search : ?0 } }") 
Set<LabelsPredefined> findLabelsPredefinedBySearchString(final String searchString); 

我的問題是,只有當整個搜索字符串比方法的響應對象相匹配的名稱。有沒有可能的解決方案?

回答

0

我不知道這句法:

@Query("{$text : { $search : ?0 } }")

也許你應該嘗試傳遞,而不是字符串TextCriteria:

TextCriteria criteria = TextCriteria.forDefaultLanguage() 
    .matchingAny(searchString); 

並改變你的簽名方法:

Set<LabelsPredefined> findLabelsPredefinedBySearchString(TextCriteria criteria);