我尝试了两个索引和命名参数,但是都行不通:
SELECT
*
FROM
Character
WHERE
pinyin like '%:keyword%'
即将发布的sql是:
休眠:
{{1}}
为什么不使用我实际传递的参数替换关键字占位符?
答案 0 :(得分:0)
您可以尝试以下方法:
public interface CharacterRepository extends JpaRepository<Character, Long> {
@Query(nativeQuery=true, value="SELECT * FROM Character WHERE pinyin like ':keyword'")
List<Character> findByKeyword(@Param("keyword") String keyword);
}
并调用如下方法:
repository.findByKeyword("%myKeyword%");
答案 1 :(得分:0)
尝试一下:
JPQL / HQL
select c from Character c where c.pinyin like %:keyword%
select c from Character c where c.pinyin like concat('%', :keyword, '%')
本机(PostrgeSQL / MySQL)
select * from character c where c.pinyin like concat('%', :keyword, '%')
本机(PostrgeSQL)
select * from character c where c.pinyin like '%' || :keyword || '%'
Spring Data JPA查询方法的替代变体
List<Character> findByPinyinContaining(String pinyin);
其他信息:
答案 2 :(得分:0)
您的查询应该是这样-
@Query(nativeQuery=true, value="SELECT * FROM Character c WHERE c.pinyin like %:keyword%")
List<Character> findByKeyword(@Param("keyword") String keyword);
希望有帮助。