Olá Galera, estou tentando fazer uma consulta em JPQL só que está dando um erro estranho.
Segue o codigo.
publicList<Apropriar>getApropriacoesHoje(){EntityManagerem=newJPAUtil().getEntityManager();em.getTransaction().begin();Stringjpql=" 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";Queryquery=em.createQuery(jpql);em.close();returnquery.getResultList();}
privateDateagora=newjava.util.Date();SimpleDateFormatformatar=newSimpleDateFormat("yyyy-dd-MM");StringdataFormatada=formatar.format(agora);Stringjpql=" 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 a.data =:pData";Queryquery=em.createQuery(jpql);query.setParameter("pData",dataFormatada);
L
luis.feitoza
Então digaoneves tentei fazer uma consulta simples usando TO_DAYS deu certo, não estou conseguindo fazer o join.
from Apropriar a where TO_DAYS(NOW()) - TO_DAYS(a.data) <= 30
Como se faz um join no jpql, pelo que eu olheio na documentação e desta forma citada acima mais tenho que fazer mais alguma coisa ? Referenciar as classes que estou fazendo esse
join???
L
luis.feitoza
Alguem ?
L
luis.feitoza
Acredito que esses erros bobos só acontecem comigo…AFF
Então galera, o que acontece que estou tentando fazer uma consulta meio boba mais passando um parametro uma data.
Segue o codigo:
publicList<Apropriar>getApropriacoesHoje()throwsParseException{EntityManagerem=newJPAUtil().getEntityManager();em.getTransaction().begin();SimpleDateFormats=newSimpleDateFormat("yyyy-MM-dd");Calendarc=Calendar.getInstance();s.format(c.getTime());Stringjpql=" from Apropriar a where a.data = :pData";Queryquery=em.createQuery(jpql);query.setParameter("pData",s.format(c.getTime()));em.close();returnquery.getResultList();}
O erro que está dando:
javax.servlet.ServletException: Parameter value [2012-05-23] was not matching type [java.util.Calendar]
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
Já tentei passar somente c.getTime() e continua dando a mesma exceção…Alguem sabe o motivo ??
M
Marcos_Andrei1 like
Essa mensagem de erro do Hibernate:
unexpected token: on near line
Significa que o “ON” do seu join não é suportado, use essa sintaxe quando usar SQL apenas.
Na JPA os joins são feitos no modelo de orientação à objetos, ou seja, você precisa mapear o relacionamento antes na classe modelo, para fazer buscas com join usando JPQL/HQL.