Carregar DataTable com Pesquisa

Olá Pessoal,

Estou tentando após uma pesquisa, carregar um DataTable abaixo, trazendo os valores da pesquisa.
A página é exibida normalmente, mas quando clico em “Buscar”, aparece um erro.
Estou usando JSF + PrimeFaces + Hibernate com JPA.
Peço desculpas antecipadamente caso esteja violando alguma das regras do fórum. Esse trabalho é para amanhã, estou um pouco ansioso. hehehe

Segue abaixo código do Bean, da página XHTML e o stacktrace.

BEAN:

[code]package forms;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import persistence.JPAResourceBean;

import entities.Aeroporto;
import entities.Voo;

@ManagedBean (name = “VooForm”)
@ViewScoped
public class VooForm {

private Voo voo = new Voo();

private List<Aeroporto> aeroportos;
private List<Voo> trechos;
private boolean tabelaOk = false;


public String cadastrarVoo(Voo voo) {

	EntityManager em = JPAResourceBean.getEntityManager();

	try {

		em.getTransaction().begin();

		em.persist(voo);

		em.getTransaction().commit();
	}

	catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}


public boolean isTabelaOk() {
	return tabelaOk;
}


public void setTabelaOk(boolean tabelaOk) {
	this.tabelaOk = tabelaOk;
}


public Voo getVoo() {
	return voo;
}

public void setVoo(Voo voo) {
	this.voo = voo;
}

public List<Voo> getTrechos() {

	Date d = voo.getPartida();
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    
    Date d2 = voo.getPartida();
    Calendar c2 = Calendar.getInstance();
    c2.setTime(d2);
    c2.set(Calendar.HOUR_OF_DAY, 23);
    c2.set(Calendar.MINUTE, 59);
    c2.set(Calendar.SECOND, 59);
    
    
	EntityManager em = JPAResourceBean.getEntityManager();
	
	String jpql = "select v from Voo v where v.origemID = :localOrigem and v.destinoID = :localDestino and v.partida >= :dtInicio and v.partida <= dtFinal";
     
	Query q = em.createQuery(jpql, Voo.class).
			setParameter("dtInicio", c.getTime()).
			setParameter("dtFinal", c2.getTime()).
			setParameter("localOrigem", voo.getOrigemID()).
			setParameter("localDestino", voo.getDestinoID());
	
	this.tabelaOk = true;
	return this.trechos = q.getResultList();
	
	

}

public List<Aeroporto> getAeroportos() {

	EntityManager em = JPAResourceBean.getEntityManager();

Query q = em.createQuery("select a from Aeroporto a", Aeroporto.class);

	this.aeroportos = q.getResultList();

	em.close();

	return aeroportos;
}

public void setAeroportos(List<Aeroporto> aeroportos) {
	this.aeroportos = aeroportos;
}

}
[/code]

Página XHTML:

[code]

<h:head></h:head>

	<p:panelGrid columns="2">
      <f:facet name="header">BUSCAR TRECHO</f:facet>

		
Origem:		<h:selectOneMenu value="#{VooForm.voo.origemID}">
			<f:selectItem itemLabel="-- SELECIONE --" noSelectionOption="true"></f:selectItem>
			<f:selectItems value="#{VooForm.aeroportos}" var="aero"
				itemValue="#{aero.codigo}" itemLabel="#{aero.nome}"></f:selectItems>
		</h:selectOneMenu>

		
Destino:		<h:selectOneMenu value="#{VooForm.voo.destinoID}">
			<f:selectItem itemLabel="-- SELECIONE --" noSelectionOption="true"></f:selectItem>
			<f:selectItems value="#{VooForm.aeroportos}" var="aero"
				itemValue="#{aero.codigo}" itemLabel="#{aero.nome}"></f:selectItems>
		</h:selectOneMenu>


		
Data: <p:calendar value="#{VooForm.voo.partida}" id="popupButtonCal" showOn="button" pattern="dd/MM/yyyy" />

<f:facet name=“footer”>
<p:commandButton value=“Buscar” action="#{VooForm.getTrechos}" update=":tabela"></p:commandButton>
</f:facet>

</p:panelGrid>
</h:form>

<p:outputLabel id="tabela">

<p:dataTable value="#{VooForm.trechos}" var="trecho" rendered="#{VooForm.tabelaOk}" >
<p:column headerText="Vôo">
<h:outputText value="#{trecho.codigo}"></h:outputText>
</p:column>

</p:dataTable>
</p:outputLabel>







</body>
[/code]

StackTrace:

[code]Nov 27, 2013 3:50:59 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{VooForm.getTrechos}: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
javax.faces.FacesException: #{VooForm.getTrechos}: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
… 23 more
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:368)
at forms.VooForm.getTrechos(VooForm.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
… 24 more
Caused by: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:101)
at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:107)
at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:460)
at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:430)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:362)
… 33 more

Nov 27, 2013 3:50:59 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:368)
at forms.VooForm.getTrechos(VooForm.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
… 24 more
Caused by: org.hibernate.QueryParameterException: could not locate named parameter [dtFinal]
at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:101)
at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:107)
at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:460)
at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:430)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:362)
… 33 more[/code]

Heeeelp! =(

Cara, também estou precisando da mesma coisa. Alguma alma caridosa?

LucasFalanga faltou o “:” antes de dtFinal na query. Tente assim.

Dava erro nesta linha pois sem o “:” não ere interpretado como um parametro.