1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Passagem de parâmetro no HQL em DAO Generico

Galera,

Estou tentando aplicar um filtro no hql, porem ele lança a seguinte exeption ao debuggar:

Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2

Chamei desta forma:

List<Tag> qry = new ArrayList<>(dao.getList(Tag.class, "from Tag t where t.conhecimento = ?", id));

Implementação da função responsavel

public <T extends Serializable> List<T> getList(Class<T> classToCast, String query, Object... params) {
        this.session = getSession();
        Query qr = session.createQuery(query);
        for (int i = 1; i <= params.length; i++) {
            qr.setParameter(i, params[i - 1]);
        }
        List<T> toReturn = qr.list();
        session.getTransaction().commit();
        session.close();
        return toReturn;
    }

Pelo que entendi da msg, parece que o indice do parametro esta na posição 2 e deveria estar na posição 1, porem no for ele inicia com 1!

  • tente fazer o for assim

    for (int i = 0; i < params.length; i++) {
                qr.setParameter(i, params[i]);
            }
    Cristian Urbainski   04 de jun de 2013
  • Dessa forma ele da um IndexOutOfBounds!

    Jeferson Cruz   04 de jun de 2013
  • tire o <= e deixe apenas < que nem eu fiz, acabei de editar o comentario e este vai embora espero que com isso funcione...

    Cristian Urbainski   04 de jun de 2013
  • Exato... Obrigado

    Jeferson Cruz   04 de jun de 2013
  • postei a resposta por favor marque-a como correta...

    Cristian Urbainski   04 de jun de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.