Fórum Order by dinamico em JPQL #433720
30/01/2013
0
Estou usando JPA 2.0, com EclipseLink.
"SELECT new entidades.com.ComCotacao3(c.idcodigo3, c.descricao3, c.datainc3, c.prazolancamento3, c.status3, c.qtditens3) "+ " FROM ComCotacao3 c " + " WHERE c.todosfornecedores3 = :todosfornecedores3 or" + " (c.fk_ger_grupofor3 is null or c.fk_ger_grupofor3 = :fk_ger_grupofor3) " + " ORDER BY :orderby")
Fernando Silva
Curtir tópico
+ 0Posts
31/01/2013
Davi Costa
att Davi
Gostei + 0
31/01/2013
Danilo Gomes
Criterias têm como principal vantagem serem dinâmicas. Facilitaria bastante sua vida.
Gostei + 0
07/02/2013
Fernando Silva
No código esta a explicação.
//Aqui gostaria de passar uma lista com estes campos a serem retornados, pra ficar dinamico
//Geralmente eu passo uma lista com os campos e faço um for para formar a JPQL, o que não consegui com exemplo abaixo
cq.multiselect(cotRoot.get("idcodigo3"),cotRoot.get("descricao3"),cotRoot.get("datainc3"),cotRoot.get("prazolancamento3"),
cotRoot.get("status3"),cotRoot.get("qtditens3"));
//Para o order by esta perfeito, só no select e where que não consigo fazer um metodo dinamico.
cq.orderBy(cb.asc(cotRoot.get(_pesquisa.getOrderBy())));
//Este orderby tambem tem que ser dinamico ora vai ser varios campos a serem comparados hora não ai queria passar somente
//Os que vão ser comparados, por exemplo campo todosfornecedores3, tem momento que não vou compara-lo e assim vai
cq.where(cb.or(cb.equal(cotRoot.get("todosfornecedores3"), _pesquisa.getListaValorPesquisa().get(0)), cb.or(cb.isNull(cotRoot.get("fk_ger_grupofor3")),cb.equal(cotRoot.get("fk_ger_grupofor3"),_pesquisa.getListaValorPesquisa().get(1)))));
Gostei + 0
07/02/2013
Fernando Silva
No código esta a explicação.
//Aqui gostaria de passar uma lista com estes campos a serem retornados, pra ficar dinamico
//Geralmente eu passo uma lista com os campos e faço um for para formar a JPQL, o que não consegui com exemplo abaixo
cq.multiselect(cotRoot.get("idcodigo3"),cotRoot.get("descricao3"),cotRoot.get("datainc3"),cotRoot.get("prazolancamento3"),
cotRoot.get("status3"),cotRoot.get("qtditens3"));
//Para o order by esta perfeito, só no select e where que não consigo fazer um metodo dinamico.
cq.orderBy(cb.asc(cotRoot.get(_pesquisa.getOrderBy())));
//Este orderby tambem tem que ser dinamico ora vai ser varios campos a serem comparados hora não ai queria passar somente
//Os que vão ser comparados, por exemplo campo todosfornecedores3, tem momento que não vou compara-lo e assim vai
cq.where(cb.or(cb.equal(cotRoot.get("todosfornecedores3"), _pesquisa.getListaValorPesquisa().get(0)), cb.or(cb.isNull(cotRoot.get("fk_ger_grupofor3")),cb.equal(cotRoot.get("fk_ger_grupofor3"),_pesquisa.getListaValorPesquisa().get(1)))));
Corrigindo nesta linha é where inves de orderby
//Este where tambem tem que ser dinamico ora vai ser varios campos a serem comparados hora não ai queria passar somen
Gostei + 0
11/03/2013
Fernando Silva
Alem disso também passei via string os parâmetros mas complexos como data assim como o orderby.
conforme abaixo.
"SELECT new entidades.com.ComCotacao3(c.idcodigo3, c.descricao3, c.datainc3, c.prazolancamento3, c.status3, c.qtditens3) "+ " FROM ComCotacao3 c " + " WHERE c.todosfornecedores3 = :todosfornecedores3 or" + " (c.fk_ger_grupofor3 is null or c.fk_ger_grupofor3 = :fk_ger_grupofor3) " + " and (c.data >= "+stringData+")" + " ORDER BY "+stringOrderBy);
Gostei + 0
31/07/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)