Pessoal, bom dia…
Estou usando o JPA com implementação Hibernate e estou tendo dificuldades em executar um código HQL…
Preciso realizar uma consulta no banco de dados que me retorne a soma da das horas do colaborador para cada um dos contratos e ordens de serviços trabalhados, o contrato e a ordem de serviço. Tudo isso, de acordo com um período de tempo que será informado pelo usuário.
Atualmente, estou realizando a consulta da seguinte maneira:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String SQL = "SELECT new Apropriacao(SUM(apr.hora) as hora, apr.contrato, apr.os) FROM Apropriacao as apr";
SQL += " WHERE apr.pessoa= :pessoa";
SQL += " AND to_date(concat(concat(lpad(apr.dia,2,0),lpad(apr.mes,2,0)),apr.ano),'ddmmyyyy') >= :dtDe";
SQL += " AND to_date(concat(concat(lpad(apr.dia,2,0),lpad(apr.mes,2,0)),apr.ano),'ddmmyyyy') <= :dtAte";
SQL += " GROUP BY apr.contrato, apr.os";
SQL += " ORDER BY apr.contrato, apr.os";
Query select = sessao.createQuery(SQL);
select.setParameter("pessoa", pessoa); //String que define a sigla do usuário no sistema
select.setParameter("dtDe", formatter.format(de)); //Data de início, definido pelo usuário
select.setParameter("dtAte", formatter.format(ate)); //Date final, definido pelo usuário
List dados = select.getResultList();
//Omitindo try-catchs e etc
Quando eu executo este método ou a consulta não me retorna os dados corretamente, ou ocorre uma exception que diz que o número do mês é inválido…
Gostaria de saber se o erro está na sintaxe do meu HQL ou se está na lógica da minha consulta…
Caso alguém possa me ajudar, fico muito agradecido.