how to use query with more than one field (.vo template) in a datamodel

1

I have the following query and am wanting to put this list with products and the summation in a datamodel list.

public List<Filtro> listarProdutosDoGerenteRegional() { try { return manager.createQuery( "select new br.com.previsao.model.vo.Filtro(p, sum(p.quantidadeRecente)) from Produto p where p.gerenteFilial.chefe.codigo =:codigo group by p", Filtro.class).setParameter("codigo", usuario.getCodigo()).getResultList(); } catch (NoResultException e) { return null; } }

The bean is as follows:

@Named
@ViewScoped
public class PrevisaoGerenteRegionalBean implements Serializable {
private static final long serialVersionUID = 1L;

@Inject
private Produtos previsoes;

@Inject
@UsuarioLogado
private Usuario usuario;

private  BigDecimal quantidadesRecentes;

public BigDecimal getQuantidadesRecentes() {
    return quantidadesRecentes;
}

public void setQuantidadesRecentes(BigDecimal quantidadesRecentes) {
    this.quantidadesRecentes = quantidadesRecentes;
}

private List<Filtro> listaDePrevisoes = new ArrayList<>();

private Produto previsaoSelecionada;

public List<Filtro> getPrevisoes() {
    return listaDePrevisoes;
}

public void inicializar() {
    if (FacesUtil.isNotPostback()) {

        listaDePrevisoes = previsoes.listarProdutosDoGerenteRegional();

    }
}

public void excluir() {
    previsoes.remover(previsaoSelecionada);
    this.listaDePrevisoes.remove(previsaoSelecionada);
    FacesUtil.addInfoMessage("Provisão " + " excluída com sucesso.");
}

And the HTML list is as follows:

<p:dataTable id="previsaosTable"
                value="#{previsaoGerenteRegionalBean.previsoes}" var="produto"
                style="margin-top: 20px" emptyMessage="#{msg.nenhum_tecnico}"
                paginatorPosition="bottom" rows="5" paginator="true"
                paginatorTemplate="{RowsPerPageDropdown} {PreviousPageLink} {CurrentPageReport} {NextPageLink}"
                currentPageReportTemplate="(#{msg.pagina} {currentPage} #{msg.de} {totalPages}) - (#{msg.registro} {startRecord} #{msg.a} {endRecord}) - Total ({totalRecords} #{msg.registros})"
                styleClass="mystyle" paginatorAlwaysVisible="true"
                rowsPerPageTemplate="10, 20, 30">

                <f:facet id="header" name="header">
                    lista de Historicos
                </f:facet>

                <p:column headerText=" Codigo do Produto"
                    sortBy="#{produto.codigoProduto}"
                    style="text-align: center; width: 140px">
                    <h:outputText value="#{produto.produto.codigoProduto}">

                    </h:outputText>
                </p:column>
</p:dataTable>

The vo.filter template has the following fields:

public class Filtro {

private Produto produto;

public Produto getProduto() {
    return produto;
}



public void setProduto(Produto produto) {
    this.produto = produto;
}



private Long total;

public Long getTotal() {
    return total;
}



public void setTotal(Long total) {
    this.total = total;
}

}

    
asked by anonymous 28.06.2017 / 18:00

0 answers