[SQLGrammarException] - Ao executar a query é apresentado esse erro

4 respostas
igormoura
@SuppressWarnings("unchecked")
	public List<MensagemMedPreventiva> getMensagemMedPreventiva(
			Date dataInicial, Date dataFinal, Long classificacao,
			String beneficiario) {
		
	
		String hql = "FROM  MensagemMedPreventiva msg " +
					 "WHERE " +
					 "msg.dataInclusao between :dataInicial and :dataFinal and" +
					 "msg.classificacao.id = :classificacao and" +
					 "msg.pessoa.nome = :beneficiario";

		Query query = em.createNativeQuery(hql);
		query.setParameter("dataInicial", sdf.format(dataInicial));
		query.setParameter("dataFinal", sdf.format(dataFinal));
		query.setParameter("classificacao", classificacao);
		query.setParameter("beneficiario", beneficiario);

		try {
			return (List<MensagemMedPreventiva>) query.getSingleResult();
		}catch(NoResultException e){
			return null;
		}

		

	}

Agradeço por quem poder me ajudar.

4 Respostas

igormoura

ERRO APRESENTADO !

Exception during request processing:
Caused by javax.servlet.ServletException with message: “#{msgMedPreventivaCtrl.consultar()}: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query”

igor_ks

Coloca uns espacamentos entre uma linha e outra.

Do jeito que voce está fazendo, ta gerando assim:

“FROM MensagemMedPreventiva msg WHERE msg.dataInclusao between :dataInicial and :dataFinal andmsg.classificacao.id = :classificacao andmsg.pessoa.nome = :beneficiario”

igormoura

Isso tbm, corrigi !
O problema estava também na execução da SHL que estava assim, buscando um sql nativo e não do hibernate !

Query query = em.createNativeQuery(hql);

corrigi e deu certo !

Query query = em.createQuery(hql);

vlw obrigado !!!

igormoura

PARA EU EXIBIR A LISTA COM O RESULTADO, TERIA QUE FAZER ASSIM ? ESTA DANDO ERRO !

@SuppressWarnings("unchecked")
	public List<MensagemMedPreventiva> getMensagemMedPreventiva(
			Date dataInicial, Date dataFinal, Long classificacao,
			String beneficiario) {
		
		String hql = "FROM  MensagemMedPreventiva msg " +
					 "WHERE " +
					 "msg.dataInclusao between :dataInicial and :dataFinal and " +
					 "msg.classificacao.id = :classificacao and " +
					 "msg.pessoa.nome = :beneficiario";

		Query query = em.createQuery(hql);
		query.setParameter("dataInicial", dataInicial);
		query.setParameter("dataFinal", dataFinal);
		query.setParameter("classificacao", classificacao);
		query.setParameter("beneficiario", beneficiario);
		
		List<MensagemMedPreventiva> mensagemList = query.getResultList();
		
		try {
			return mensagemList;
		}catch(NoResultException e){
			return null;
		}
Criado 22 de outubro de 2013
Ultima resposta 22 de out. de 2013
Respostas 4
Participantes 2