Spring启动搜索所有列中的单词

时间:2018-03-20 14:53:44

标签: spring-boot spring-data-jpa

我有一张桌子UserUser实体有firstNameLastNamemiddleName。我想在其中一列中获取包含单词loeLIKE %loe%)的所有行。我认为它缩小到:

Page<User> findBy<columnName>Or<ColumnName>Or(...)Contains(...)...

这应该有用,但如果我想将单词loe与所有列匹配(fe。9)该怎么办?这是一个正确的方法吗?或者我可能因为这个原因而创建一个@Query

1 个答案:

答案 0 :(得分:1)

您可以使用@Query并满足您的要求。但是您可能需要考虑使用Spring Data JPA with Specifications并且可能更适合,因为这将减少您的repo中的查询方法的数量并允许可重用​​的谓词。

您只需实现Specification接口并实现方法toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb)即可构建并返回满足您条件的Predicate。使回购扩展JpaSpecificationExecutor。好的是这些Predicates是可重复使用的,您可以根据需要进一步组合它们。

您可以浏览Advanced Spring Data JPA - Specifications and Querydsl以获取概述。

为了进一步简化代码,为避免编码Specification,您可能还需要检查Spring data JPA QueryDsl