Consulta com parâmetros posicionais

2 respostas
alex_braga

Bom dia a todos,

è o seguinte, estou tentando fazer uma consulta com parametros posicionais, conforme código abaixo

String queryString = "select user from ?1 user";
 String string = "User";
 Query query = em.createQuery(queryString).setParameter(1, string);

mas é lançada a seguinte excessão

Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ? near line 1, column 18 [select user from ?1 user]
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)
        at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)
        at br.com.completestruts2.dao.teste.main(teste.java:25)
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ? near line 1, column 18 [select user from ?1 user]
        at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
        at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
        at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
        at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
        at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
        at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)

Estou utilizando a biblioteca do Hibernate - JPA, do netBeans 6.8

Alquem poderia me ajudar?

2 Respostas

thiago.correa

Você não pode passar a tabela e colunas que deseja consultar como parâmetro

alex_braga

Obrigado Thiago.

Bom testei no código e realmente vc esta correto.
Passei o parâmetro após o where e deu certo.
Mas minha dúvida é o seguinte.
Assiti uma video aula onde o autor fazia uma consulta com o seguite código:

select max(cn.?2) from ?1 cn

Nesse caso ela pasa a coluna e o nome da tabela como parâmetro.
No exemplo rodou.

Será que isso é uma caracteristica do JPA 1?

Criado 17 de setembro de 2010
Ultima resposta 17 de set. de 2010
Respostas 2
Participantes 2