JPA,为什么不替换本机查询中的命名参数?

tob*_*obi 5 parameters spring jpql spring-data-jpa

我尝试了索引和命名参数,但它不起作用:

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);
}
Run Code Online (Sandbox Code Playgroud)

输出的sql是:

休眠:

   SELECT
        * 
    FROM
        Character 
    WHERE
        pinyin like '%:keyword%'
Run Code Online (Sandbox Code Playgroud)

为什么关键字占位符没有被我实际传递的参数替换?

Bri*_*rgh 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);
}
Run Code Online (Sandbox Code Playgroud)

并像这样调用该方法:

repository.findByKeyword("%myKeyword%");
Run Code Online (Sandbox Code Playgroud)