Dúvida JPA 2.0, chamando lista com parametros

9 respostas
J

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!

9 Respostas

H

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

N

Estava com um problema similar.

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

J

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…!

H

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…!Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?

J

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…!Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?

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.

H

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…!Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?

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.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

J

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…!Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?

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.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

Vlw! Vou dar uma olhada.

J

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…!Pq vc não usa o <f:setPropertyActionListener value="" target="" /> e continua com o método sem parâmetro?

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.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

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!

N

Acho que isso aqui pode te ajudar:

Criado 25 de janeiro de 2013
Ultima resposta 25 de jan. de 2013
Respostas 9
Participantes 3