[RESOLVIDO] Passar Parâmetro de uma NamedQuery em DAO Genérico

Alguém sabe como faço para passar o parâmetro de uma NamedQuery para um método getList de um DAO genérico?

Eu faço uma chamada ao método dessa forma:
daoRNC.getList(this.rnc.getClass(), “Tbrnc.findByCnpj”,this.varEmpresa);

E recebo a seguinte mensagem:
java.lang.IllegalArgumentException: You have attempted to set a parameter at position 1 which does not exist in this query string SELECT t FROM Tbrnc t WHERE t.cnpj = :cnpj.

Segue código do método:

public List getList(Class classToCast,String jpql, Object… parameters) {
List toReturn = null;
Query qr = entityManager.createNamedQuery(jpql);
for (int i = 0; i < parameters.length; i++) {
qr.setParameter(i + 1, parameters[i]);
}
entityManager.getTransaction().begin();
toReturn = qr.getResultList();
entityManager.getTransaction().commit();
entityManager.close();
return toReturn;
}

Segue a resolução que encontrei para quem precisar:

  1. Quando uso um método genérico do tipo getList ou getEntity e que passa como parâmetro uma NamedQuery e não uma Query Dinâmica, a NamedQuery em questão deve possuir parâmetros posicionais e não nomeados. No meu caso por exemplo a minha NamedQuery estava assim:
    @NamedQuery(name = “Tbrnc.findByCnpj”, query = “SELECT t FROM Tbrnc t WHERE t.cnpj = :cnpj”),

Então quando eu chamava o método abaixo passando-a como parâmetro:
daoRNC.getList(this.rnc.getClass(), “Tbrnc.findByCnpj”,this.varEmpresa);

recebia esse erro:
java.lang.IllegalArgumentException: You have attempted to set a parameter at position 1 which does not exist in this query string SELECT t FROM Tbrnc t WHERE t.cnpj = :cnpj.

Isso porque no meu método getList era é feito um loop para pegar os parâmetros posicionais da NamedQuery e como não havia nenhum, ele me informava que eu estava tentando passar um parâmetro que não existia na Query.

Resolvi a situação apenas passando o parâmetro “:cnpj” para uma parâmetro posicional deixando a query assim:
@NamedQuery(name = “Tbrnc.findByCnpj”, query = “SELECT t FROM Tbrnc t WHERE t.cnpj = ?1”)

dessa forma o método getList funcionou sem problemas.