1
我用戶Spring Data,並將按名字,姓氏,電子郵件或用戶名搜索條目。我必須設置參數四次還是隻能設置一次參數? 謝謝!Spring數據存儲庫MongoDB
userRepository.findUsersByFirstnameOrSurnameOrEmailOrUsername("Mustermann", "Mustermann",
"Mustermann", "Mustermann");
我用戶Spring Data,並將按名字,姓氏,電子郵件或用戶名搜索條目。我必須設置參數四次還是隻能設置一次參數? 謝謝!Spring數據存儲庫MongoDB
userRepository.findUsersByFirstnameOrSurnameOrEmailOrUsername("Mustermann", "Mustermann",
"Mustermann", "Mustermann");
如果你想自動從方法名生成的查詢,那麼,你就必須要通過4個參數,如果所有的人都可以在某些情況下,相同的值,相同的值將有要通過4次。
但是,如果您願意權衡易於傳遞參數的自動查詢生成功能,則可以使用@Query
註釋生成您自己的查詢。此註釋將採取任何有效的MongoDB查詢,以便爲您的情況下,MongoDB的查詢將是:尋求幫助
@Query("$or : [{'firstName' : ?1}, {'surname' : ?1}, {'email' : ?1}, {'userName' : ?1}]")
List<User> findUsersByFirstnameOrSurnameOrEmailOrUsername(String keyword);
非常感謝:
可以因此編寫查詢作爲!一個小的更正 - 索引從0開始。謝謝 – quma
我會對這個查詢有一個問題。我想要一個「like」語句:** @ Query(「{$ or:[{'firstname':?0},{'surname':?0},{'email':?0},{ '用戶名':?0}]}「)** - 例如名字不應該是名字,也可以是名字的一個片段 – quma
MongoDB支持所謂的[文本搜索](http://docs.mongodb.org/manual/reference/operator/query/text/#op._S_text )。對於您想要執行LIKE查詢的字段,您可以應用['@ TextIndexed'](http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/# mongodb.repositories.queries.full-text)註解在實體類中,如:@TextIndexed private String firstName;等等。然後,您只需發出MongoDB查詢'@Query(「$ text:{$ search:?0}}」)'。然後,MongoDB將對用@ @ TextIndexed註釋的所有字段執行全文搜索。 – manish