Java Hibernate错误(JPA查询和SpEL表达式):org.Hibernate.QueryException:命名参数未绑定

Java Hibernate错误(JPA查询和SpEL表达式):org.Hibernate.QueryException:命名参数未绑定,java,spring,hibernate,spring-el,Java,Spring,Hibernate,Spring El,我正在使用Spring4 接下来,我设法使用工作正常的SpEL表达式构建了一些查询 但我一直在这个查询和类似的查询中发现Hibernate的错误: @Query("SELECT c FROM Client c WHERE c.id LIKE CONCAT(:#{#f.id}) AND LOWER(c.contract) LIKE LOWER(CONCAT('%',:#{#f.contract}, '%'))" public abstract Page<Client> findWith

我正在使用Spring4

接下来,我设法使用工作正常的SpEL表达式构建了一些查询

但我一直在这个查询和类似的查询中发现Hibernate的错误:

@Query("SELECT c FROM Client c WHERE c.id LIKE CONCAT(:#{#f.id}) AND LOWER(c.contract) LIKE LOWER(CONCAT('%',:#{#f.contract}, '%'))"
public abstract Page<Client> findWithFiltersPaginated(@Param("f") ClientFilter filter, Pageable pageable);
我经常在其他查询中使用SpEL表达式,但并不总是这样

我已经设法通过改变条件来解决这个问题,但这很烦人,我似乎找不到一个模式。否则,它看起来就像一个非常奇怪的虫子


有人知道会发生什么吗?

问题是关于Spring数据的“StringQuery”中的“SpelExtractor”,JPA几天前我为Spring团队创建了一个问题,并等待响应。请参阅
@Query("SELECT c FROM Client c WHERE c.id LIKE CONCAT(:#{#f.id}))"
public abstract Page<Client> findWithFiltersPaginated(@Param("f") ClientFilter filter, Pageable pageable);
@Query("SELECT c FROM Client c WHERE LOWER(c.contract) LIKE LOWER(CONCAT('%',:#{#f.contract}, '%'))"
public abstract Page<Client> findWithFiltersPaginated(@Param("f") ClientFilter filter, Pageable pageable);
@Query("SELECT c FROM Client c WHERE LOWER(c.contract) LIKE LOWER(CONCAT('%',:#{#f.contract}, '%')) AND c.id LIKE CONCAT(:#{#f.id})"
public abstract Page<Client> findWithFiltersPaginated(@Param("f") ClientFilter filter, Pageable pageable);
@Query("SELECT c FROM Client c WHERE c.id LIKE CONCAT(:#{#f.id}) AND LOWER(c.contract) LIKE LOWER(CONCAT('%',:#{#f.contract}, '%')) AND c.status LIKE CONCAT(:#{#f.status})"
public abstract Page<Client> findWithFiltersPaginated(@Param("f") ClientFilter filter, Pageable pageable);
public class ClientFilter {  

  private String id;

  private String contract;

  private String status;

  public ClientFilter() {
    super();
    this.id = "%%";
    this.status = "%%";
  }

  public ClientFilter(Long id, String contract, Status status) {
    super();
    this.id = id == null ? "%%" : id.toString();
    this.contract = contract;
    this.status = status == null ? "%%" : status.getValue().toString();
  }

  public String getId() {
    return id;
  }

  public String getContract() {
    return contract;
  }

  public String getStatus() {
    return status;
  }
}