首页 > 解决方案 > 在 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);
}

标签: spring-bootspring-data-jpahql

解决方案


推荐阅读