Tenho o seguinte método com a JPQL:
private List<Integer> findByCustomers(List<JiraCliente> clientes) {
String jpql = "SELECT DISTINCT u.idx FROM Usuario u WHERE u.clientes IN :clientes ORDER BY u.nome, u.sobrenome";
TypedQuery<Integer> query = em.createQuery(jpql, Integer.class);
query.setParameter("clientes", clientes);
return query.getResultList();
}
Porém quando executo esta query, recebo o seguinte erro:
java.lang.IllegalArgumentException: Parameter value [JiraCliente@37ea2d9a] did not match expected type [java.util.Collection (n/a)]
at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:54)
at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:27)
at org.hibernate.query.internal.QueryParameterBindingImpl.validate(QueryParameterBindingImpl.java:90)
at org.hibernate.query.internal.QueryParameterBindingImpl.setBindValue(QueryParameterBindingImpl.java:55)
at org.hibernate.query.internal.QueryParameterBindingsImpl.expandListValuedParameters(QueryParameterBindingsImpl.java:577)
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1536)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1505)
at org.hibernate.query.Query.getResultList(Query.java:135)
Este erro ocorre com o projeto usando Hibernate. Fiz um teste com Eclipselink e a consulta executa normalmente. O erro ocorre nesse ponto "query.setParameter("clientes", clientes)". O método "setParameter(String string, Object o)" espera como argumento uma string e um objeto mas parece que ele não está fazendo o parse de object para a lista do tipo que passei.