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