spring-boot - 在 Spring Boot HQL 查询中多次使用相同的参数
问题描述
我收到一个奇怪的错误,当我在同一个查询中多次使用一个参数编写 HQL 查询时它不起作用,例如:
这样做不起作用:
SELECT Object(o) FROM Pessoa o WHERE o.situacaoEnum IN (:situacao) AND (o.razaoSocial LIKE %:query% OR o.nomeFantasia LIKE %:query% OR o.cpfCnpj = :query)
但如果这样做,它会完美地工作:
SELECT Object(o) FROM Pessoa o WHERE o.situacaoEnum IN (:situacao) AND (o.razaoSocial LIKE %:rs% OR o.nomeFantasia LIKE %:nf% OR o.cpfCnpj = :cc)
我的存储库
public interface PessoaRepository extends JpaRepository<Pessoa, Long> {
final String BY_QUERY = " FROM Pessoa o WHERE o.situacaoEnum IN (:situacao) AND (o.razaoSocial LIKE %:rs% OR o.nomeFantasia LIKE %:nf% OR o.cpfCnpj = :cc) ";
final String BY_SITUACAO = "FROM Pessoa o WHERE o.situacaoEnum IN (:situacao) ";
@Query(value = "SELECT Object(o)" + BY_QUERY, countQuery = "SELECT count(o)" + BY_QUERY)
Page<Pessoa> findByQuery(@Param("rs") String rs, @Param("nf") String nf, @Param("cc") String cc, @Param("situacao") List<SituacaoEnum> situacao, Pageable pageable);
@Query(value = "SELECT Object(o)" + BY_SITUACAO, countQuery = "SELECT count(o)" + BY_SITUACAO)
Page<Pessoa> findBySituacao(@Param("situacao") List<SituacaoEnum> situacao, Pageable pageable);
}
解决方案
推荐阅读
- c++ - C++ 调用 API 函数 ::GetTickCount() 大约需要 18 天
- amazon-web-services - Lambda 函数中的某些逻辑并未在所有调用中执行
- reactjs - 使用汇总创建 React Tree Shakable 库
- laravel - Laravel-注销后如何保持在同一页面上,同时将用户重定向到不同的页面以防注销后无法访问同一页面?
- windows - SourceTree 不刷新文件更改和暂存状态 - windows
- ruby-on-rails - 将 CSV/Excel 文件导入 Ruby on Rails 时出错
- java - 数字(或)数字和逗号(或)数字的正则表达式 逗号和空格(或)数字逗号空格数字
- python-3.x - 查找所有程序,用python3 + gtk3编写,安装在我的linux系统上
- javascript - Javascript计算textarea中的剩余字符
- node.js - AWS Cloudfront + lambda@edge 修改 html 内容(使所有链接绝对 -> 相对)