Erro de Query utilizando data

5 respostas
P

pessoal o programa aqui esta dando erro na manipulação dos dados alguem sabe o que tem de errado com este código?:

private boolean isExisteLocacaoUsuarioEmAberto(Usuario usuario)
    {
        Date dataAtual = new Date();
        List<Locacao> locacaoEmAberto = em.createQuery("select l from Locacao l where l.usuarioLocacao = :usuario and dataDevolucao is null and previsaoDevolucao < :dataAtual", Locacao.class).setParameter("usuario", usuario).setParameter("dataAtual", dataAtual, TemporalType.DATE).getResultList();
        return !locacaoEmAberto.isEmpty();
    }

o erro que dá é este:

Exception Description: Error compiling the query [select l from Locacao l where l.usuarioLocacao = :usuario and dataDevolucao is null and previsaoDevolucao < :dataAtual], line 1, column 62: unknown identification variable [datadevolucao]. The FROM clause of the query does not declare an identification variable [datadevolucao].

at org.eclipse.persistence.exceptions.JPQLException.aliasResolutionException(JPQLException.java:192)

at org.eclipse.persistence.internal.jpa.parsing.VariableNode.validate(VariableNode.java:166)

at org.eclipse.persistence.internal.jpa.parsing.NullComparisonNode.validate(NullComparisonNode.java:42)

at org.eclipse.persistence.internal.jpa.parsing.Node.validate(Node.java:94)

at org.eclipse.persistence.internal.jpa.parsing.LogicalOperatorNode.validate(LogicalOperatorNode.java:39)

at org.eclipse.persistence.internal.jpa.parsing.Node.validate(Node.java:91)

at org.eclipse.persistence.internal.jpa.parsing.LogicalOperatorNode.validate(LogicalOperatorNode.java:39)

at org.eclipse.persistence.internal.jpa.parsing.WhereNode.validate(WhereNode.java:34)

at org.eclipse.persistence.internal.jpa.parsing.ParseTree.validate(ParseTree.java:211)

at org.eclipse.persistence.internal.jpa.parsing.ParseTree.validate(ParseTree.java:187)

at org.eclipse.persistence.internal.jpa.parsing.ParseTree.validate(ParseTree.java:177)

at org.eclipse.persistence.internal.jpa.parsing.JPQLParseTree.populateReadQueryInternal(JPQLParseTree.java:110)

at org.eclipse.persistence.internal.jpa.parsing.JPQLParseTree.populateQuery(JPQLParseTree.java:84)

at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:202)

at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:173)

at org.eclipse.persistence.internal.jpa.EJBQueryImpl.(EJBQueryImpl.java:125)

at org.eclipse.persistence.internal.jpa.EJBQueryImpl.(EJBQueryImpl.java:109)

at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1326)

aguem tem idéia do que possa ser?

5 Respostas

drigo.angelo

datadevolucao --> tem certeza que existe esse campo na sua base de dados?

P

tenho sim, na base esta tudo certo, inclusive executei uma query igual no banco e obtive resultado, mas aqui esta dando erro,
estou usando o postgres…

pmlm

Falta o alias nos campos:
l.dataDevolucao e l.previsaoDevolucao

P

pmlm:
Falta o alias nos campos:
l.dataDevolucao e l.previsaoDevolucao

Realmente, olhei varias vezes e não consegui visualizar este erro…

mas o problema realmente era este…
muitissimo obrigado!

G

Boa Noite,

Estava vendo o post de vocês e me encontro praticamente na mesma situação, tendo como resposta o mesmo erro.
Conferi todas as dicas citadas acima e mesmo assim ainda não funcionou, alguém pode dar mais uma ajuda??

Desde já muito obrigado, segue em anexo a função para realizar a busca.

public static Long consultarQtdeGruposAlimentos(Mapa mapa) throws SigmExcecao {
	try{
		
		ConsultaHQL consulta = new ConsultaHQL();
		
		consulta.setSelect("SELECT COUNT(gpAlimento) ");
		consulta.setFrom("FROM GruposAlimentos gpAlimento ");	
		constroiWhere(consulta, mapa);
		
		return (Long)getTabela(mapa.getEntityManager(), consulta.getHqlClause(), consulta.getParamList()).get(0);
	
	}
	catch (Exception e) {
		e.printStackTrace();
		throw new SigmExcecao("Falha ao contabilizar o grupo de alimento. ");
	}		
}
Criado 17 de março de 2011
Ultima resposta 10 de abr. de 2012
Respostas 5
Participantes 4