Dúvida JPA 2.0, chamando lista com parametros

Pessoal tenho o seguinte método.


	public List<Cliente> getClientesGraficos(Date dataInicial, Date dataFinal)  throws IOException{
		if (this.clientes == null) {
		
			
			
			CriteriaBuilder cb = getManager().getCriteriaBuilder();
	        CriteriaQuery<Cliente> c = cb.createQuery(Cliente.class);
	        Root<Cliente> cliente = c.from(Cliente.class);
			
	        ParameterExpression<Date> inicio = cb.parameter(Date.class, "dataInicial");
	        ParameterExpression<Date> fim = cb.parameter(Date.class, "dataFinal");
	        
	        Expression<Date> data_cadastro_clientes = cliente.get("data_cadastro_clientes");
	        c.where(cb.between(data_cadastro_clientes, inicio, fim));

	        TypedQuery<Cliente> q = getManager().createQuery(c);
	        q.setParameter("dataInicial", dataInicial);
	        q.setParameter("dataFinal", dataFinal);

	        return q.getResultList();
	        

		
		}

		return this.clientes;
	}

No datatable(Primefaces) eu coloquei como value, value="#{clientesBean.clientesGraficos()}"

Porém esta dando erro falando que este método não existe…

ja tentei colocar value="#{clientesBean.clientesGraficos(dataInicial,dataFinal)}" passando os parâmetros mais mesmo assim ele n encontra o método.

Alguem me da um help nisso ai -?!

Vlw!




				<p:dataTable id="dtClientes"
				emptyMessage="Nenhum registro encontrado."
				value="#{clientesBean.clientesGraficos()}" var="d" paginator="true"
				rows="10"
				style=" overflow: auto; text-align: center; font-weight: bold;">



Obrigado!

Tentou deixar o método sem parâmetro e chamá-lo assim: #{clientesBean.clientesGraficos}?

Estava com um problema similar.

Foi resolvido aqui: http://www.guj.com.br/java/291672-resolvido-jsf-20---dropdown-dependente

Então sem parâmetros vai normal sim…so que eu preciso colocar os parâmetros neste método né., métodos sem parâmetros vai normal,o problema e quando preciso chamar métodos com parâmetros em um datatable, é não esta dando certo…!

Então sem parâmetros vai normal sim…so que eu preciso colocar os parâmetros neste método né., métodos sem parâmetros vai normal,o problema e quando preciso chamar métodos com parâmetros em um datatable, é não esta dando certo…![/quote]Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?

Então sem parâmetros vai normal sim…so que eu preciso colocar os parâmetros neste método né., métodos sem parâmetros vai normal,o problema e quando preciso chamar métodos com parâmetros em um datatable, é não esta dando certo…![/quote]Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?[/quote]

Por que no método preciso passar parametros para filtrar:
q.setParameter(“dataInicial”, dataInicial);
q.setParameter(“dataFinal”, dataFinal);

se não n filtra nada -.

Não entendi muito bem sua colocação da um exemplo do que você está sugerindo para fazer.

Então sem parâmetros vai normal sim…so que eu preciso colocar os parâmetros neste método né., métodos sem parâmetros vai normal,o problema e quando preciso chamar métodos com parâmetros em um datatable, é não esta dando certo…![/quote]Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?[/quote]

Por que no método preciso passar parametros para filtrar:
q.setParameter(“dataInicial”, dataInicial);
q.setParameter(“dataFinal”, dataFinal);

se não n filtra nada -.

Não entendi muito bem sua colocação da um exemplo do que você está sugerindo para fazer.[/quote]Você já usou alguma vez o <f:setPropertyActionListener value="" target="" />? Bastaria fazer algo do tipo <f:setPropertyActionListener value="#{cliene.dataInicial}" target="#{managedBean.dataInicial}" /> e no método você usaria o valor para filtrar a pesquisa.

Se não usou, aqui mostra como usar Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate

Então sem parâmetros vai normal sim…so que eu preciso colocar os parâmetros neste método né., métodos sem parâmetros vai normal,o problema e quando preciso chamar métodos com parâmetros em um datatable, é não esta dando certo…![/quote]Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?[/quote]

Por que no método preciso passar parametros para filtrar:
q.setParameter(“dataInicial”, dataInicial);
q.setParameter(“dataFinal”, dataFinal);

se não n filtra nada -.

Não entendi muito bem sua colocação da um exemplo do que você está sugerindo para fazer.[/quote]Você já usou alguma vez o <f:setPropertyActionListener value="" target="" />? Bastaria fazer algo do tipo <f:setPropertyActionListener value="#{cliene.dataInicial}" target="#{managedBean.dataInicial}" /> e no método você usaria o valor para filtrar a pesquisa.

Se não usou, aqui mostra como usar Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate[/quote]

Vlw! Vou dar uma olhada.

Então sem parâmetros vai normal sim…so que eu preciso colocar os parâmetros neste método né., métodos sem parâmetros vai normal,o problema e quando preciso chamar métodos com parâmetros em um datatable, é não esta dando certo…![/quote]Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?[/quote]

Por que no método preciso passar parametros para filtrar:
q.setParameter(“dataInicial”, dataInicial);
q.setParameter(“dataFinal”, dataFinal);

se não n filtra nada -.

Não entendi muito bem sua colocação da um exemplo do que você está sugerindo para fazer.[/quote]Você já usou alguma vez o <f:setPropertyActionListener value="" target="" />? Bastaria fazer algo do tipo <f:setPropertyActionListener value="#{cliene.dataInicial}" target="#{managedBean.dataInicial}" /> e no método você usaria o valor para filtrar a pesquisa.

Se não usou, aqui mostra como usar Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate[/quote]


public List<Cliente> getClientesGraficos(Date dataInicial, Date dataFinal)  throws IOException{  
          
          
              
            CriteriaBuilder cb = getManager().getCriteriaBuilder();  
            CriteriaQuery<Cliente> c = cb.createQuery(Cliente.class);  
            Root<Cliente> cliente = c.from(Cliente.class);  
              
            ParameterExpression<Date> inicio = cb.parameter(Date.class, "dataInicial");  
            ParameterExpression<Date> fim = cb.parameter(Date.class, "dataFinal");  
              
            Expression<Date> data_cadastro_clientes = cliente.get("data_cadastro_clientes");  
            c.where(cb.between(data_cadastro_clientes, inicio, fim));  
  
            TypedQuery<Cliente> q = getManager().createQuery(c);  
            q.setParameter("dataInicial", dataInicial);  
            q.setParameter("dataFinal", dataFinal);  
  
            return q.getResultList();  
              
  
          
  
    }  

Hebert, poderia me dar um exemplo de como o método ficaria usando o <f:setPropertyActionListener value="#{cliente.dataInicial}" target="#{clientesBean.dataInicial}" />.

Obrigado!

Acho que isso aqui pode te ajudar: