如何让 PSQL 认为"keyword"是从 Java 存储库发送的变量


package com.rev.booktags_sts.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.rev.booktags_sts.model.Booktags;
import java.util.List;
@Repository
public interface BooktagsRepository extends JpaRepository<Booktags, Long>{

//Custom query
@Query(value = "SELECT * FROM booktags s where s.tagname like '%keyword%';", nativeQuery = true)
List<Booktags> findByKeyword(@Param("keyword") String keyword);
}

正如你所看到的;关键字";在%s之间,问题是当SELECT*完成时,PSQL认为我在请求单词";关键字";那么我该如何将单词";关键字";在java环境中转换为一个变量,所以PSQL认为这是我放入关键字变量中的任何内容

@Query装饰器要求参数化查询使用不同的语法。按照文档中从方法参数中插入SQLLIKE参数的示例,尝试:

@Query(value = "SELECT * FROM booktags s WHERE s.tagname LIKE %?1", nativeQuery = true)
List<Booktags> findByKeyword(String keyword);

或者,如果要使用命名参数,则参数标记为::

@Query(value = "SELECT * FROM booktags s WHERE s.tagname LIKE %:keyword", nativeQuery = true)
List<Booktags> findByKeyword(@Param("keyword") String keyword);

最新更新