我有一个包含5列的表,我想找到使用"在"之前使用"在列1,列2和列3之间使用连接。图案。
修剪(第1列)+修剪(第2列)+修剪(第3列)LIKE%search%
有没有使用spring-data-jpa进行此操作的快捷方式而不使用本机查询?
感谢
答案 0 :(得分:1)
如果通过"捷径"你的意思是"通过在你的存储库界面中使用拟合方法名来定义查询"如记录here,答案是否定的。 Spring数据不支持字符串方法,例如" trim"用它的方法命名策略。
但是,您可以使用@Query
注释(不是本机查询!)为您的存储库方法定义JPAQL查询,如下所示:
@Query("select e from MyEntity e where concat(trim(column1), trim(column2), trim(column3)) like %:searchString%")
List<MyEntity> findBySearchString(@Param("searchString") String searchString);
答案 1 :(得分:0)
在实体中,使用注释@Formula:
@Formula( "CONCAT_WS( ' ', field1, field2 ) " )
private String concatFields;
然后在存储库中按该字段查找;
findByConcatFieldsContains( String text );