Spring boot Spring boot在所有列中搜索一个单词

Spring boot Spring boot在所有列中搜索一个单词,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我有一个表用户。用户实体有firstName、LastName和middleName。我想在其中一列中获取包含单词loe(如%loe%)的所有行。我认为它的范围缩小到: Page<User> findBy<columnName>Or<ColumnName>Or(...)Contains(...)... 这应该行得通,但如果我想将word loe与所有列fe匹配,该怎么办呢。9? 这样合适吗?或者出于这个原因,我应该创建一个@Query?您可以使用@Query

我有一个表用户。用户实体有firstName、LastName和middleName。我想在其中一列中获取包含单词loe(如%loe%)的所有行。我认为它的范围缩小到:

Page<User> findBy<columnName>Or<ColumnName>Or(...)Contains(...)...
这应该行得通,但如果我想将word loe与所有列fe匹配,该怎么办呢。9? 这样合适吗?或者出于这个原因,我应该创建一个@Query?

您可以使用@Query并满足您的需求。但是,您可能需要考虑使用规范的Spring数据JPA,这可能是一个更好的匹配,因为这样可以减少RePo中查询方法的数量,并允许使用可重用谓词。 您只需要实现规范接口并实现方法toPredicateRoot、CriteriaQuery查询、CriteriaBuilder cb来构造并返回满足您的条件的谓词。使回购协议扩展JpaSpecificationExecutor。好的是这些谓词是可重用的,您可以根据需要进一步组合它们

你可以浏览一下以获得概述


为了进一步简化代码,避免编码规范,您可能还需要检查Spring数据JPA QueryDsl。

您的意思是,仅当行的所有列中都包含单词loe时才获取行?我的意思是创建一个搜索短语。我有一个单词loe,它应该返回在三列之一中的用户。所以f.r.克洛伊,克洛伊,克洛伊,克洛伊。要从名为%loe%或姓为%loe%或中间名为%loe%的用户中选择*。