Olá Galera, estou tentando fazer uma consulta em JPQL só que está dando um erro estranho.
Segue o codigo.
public List<Apropriar> getApropriacoesHoje(){
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
String jpql = " select a.horasApropriadas," +
" p.nome," +
" p.login," +
" a.observacao, " +
" s.nomeSistema," +
" c.nome_servico" +
" from Apropriar a" +
" Inner join PerfilUsuario p on a.apropriacaoPerfil_idUsuario = p.idUsuario" +
" Inner Join CadastroServico c on a.servicoVinculado_id_servico = c.id_servico" +
" Inner Join Sistema s On a.sistemaVinculado_idSistema = s.idSistema" +
" where TO_DAYS(NOW()) - TO_DAYS(a.data) <= 30";
Query query = em.createQuery(jpql);
em.close();
return query.getResultList();
}
Erro:
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 164 [ select a.horasApropriadas, p.nome, p.login, a.observacao, s.nomeSistema, c.nome_servico from br.com.sisapropriacao.modelo.Apropriar a Inner join PerfilUsuario p on a.apropriacaoPerfil_idUsuario = p.idUsuario Inner Join CadastroServico c on a.servicoVinculado_id_servico = c.id_servico Inner Join Sistema s On a.sistemaVinculado_idSistema = s.idSistema where TO_DAYS(NOW()) - TO_DAYS(a.data) <= 30]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1154)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1100)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:254)
at br.com.sisapropriacao.mb.ApropriacaoBean.getApropriacoesHoje(ApropriacaoBean.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102)
... 37 more
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 164 [ select a.horasApropriadas, p.nome, p.login, a.observacao, s.nomeSistema, c.nome_servico from br.com.sisapropriacao.modelo.Apropriar a Inner join PerfilUsuario p on a.apropriacaoPerfil_idUsuario = p.idUsuario Inner Join CadastroServico c on a.servicoVinculado_id_servico = c.id_servico Inner Join Sistema s On a.sistemaVinculado_idSistema = s.idSistema where TO_DAYS(NOW()) - TO_DAYS(a.data) <= 30]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:284)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:98)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1760)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:251)
... 48 more
21/05/2012 12:40:48 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/SisApropriacaoRef] threw exception [org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 164 [ select a.horasApropriadas, p.nome, p.login, a.observacao, s.nomeSistema, c.nome_servico from br.com.sisapropriacao.modelo.Apropriar a Inner join PerfilUsuario p on a.apropriacaoPerfil_idUsuario = p.idUsuario Inner Join CadastroServico c on a.servicoVinculado_id_servico = c.id_servico Inner Join Sistema s On a.sistemaVinculado_idSistema = s.idSistema where TO_DAYS(NOW()) - TO_DAYS(a.data) <= 30]] with root cause
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 164 [ select a.horasApropriadas, p.nome, p.login, a.observacao, s.nomeSistema, c.nome_servico from br.com.sisapropriacao.modelo.Apropriar a Inner join PerfilUsuario p on a.apropriacaoPerfil_idUsuario = p.idUsuario Inner Join CadastroServico c on a.servicoVinculado_id_servico = c.id_servico Inner Join Sistema s On a.sistemaVinculado_idSistema = s.idSistema where TO_DAYS(NOW()) - TO_DAYS(a.data) <= 30]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
Obs.: Essa consulta está executando sem erros no MYSQL.