Ola pessoal,
To com um problema aqui e acho que não estou fazendo a query corretamente. Tenho a seguinte Named Query:
@NamedQuery(name = "Estado.findLikeNomeEstadoAndIdPais", query = "SELECT e FROM Estado e WHERE e.nomeEstado LIKE :nomeEstado AND e.idPais = :idPais ORDER BY e.nomeEstado")
Chamo ela da seguinte forma:
public List ListaEstados(String NomeEstado, Integer idPais) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Vestibulando_ManagerPU");
EntityManager em = emf.createEntityManager();
List<Estado> result = null;
try {
result = em.createNamedQuery("Estado.findLikeNomeEstadoAndIdPais")
.setParameter("nomeEstado", "%" + NomeEstado+ "%")
.setParameter("idPais", idPais)
.getResultList();
} catch (Exception e) {
e.printStackTrace();
}
return (result);
}
NomeEstado valendo M
idPais valendo 1 (1 é Brasil)
Se removo a parte do AND funciona perfeitamente sem considerar o Pais, mas com o AND da o seguinte erro:
java.lang.IllegalArgumentException: You have attempted to set a value of type class java.lang.Integer for parameter idPais with expected type of class modelo.Pais from query string SELECT e FROM Estado e WHERE e.nomeEstado LIKE :nomeEstado AND e.idPais = :idPais ORDER BY e.nomeEstado.
A tabela referente é:


Não sei se eh a melhor das alternativas, ainda to aprendendo, mas… a solução que encontrei foi trocar a namedQuery para: