1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Objeto fechado na sessão ( Lazy

Estou recebendo erro no carregamento da coleção na sessão:

2013-12-22 11:11:36,569 ERROR [br.com.confiabilidade.util.jsf.JsfExceptionHandler] Erro de sistema: failed to lazily initialize a collection, could not initialize proxy - no Session javax.faces.FacesException: failed to lazily initialize a collection, could not initialize proxy - no Session at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:84)

Como posso verificar onde está este tipo de erro?

@Inject
    private Items Items;

    @Inject
    private Tecnicos tecnicos;

    @Inject
    private CadastroItemService cadastroItemService;



    private Item itemSelecionado;

    private List<Usuario> tecnicosdaEmpresa= new ArrayList<>();

    private ItemLazyList lazyItems;



    public AssociaItemsBean() {

        itemSelecionado = new Item();

    }

    public void inicializar() {
        if (FacesUtil.isNotPostback()) {
            tecnicosdaEmpresa = tecnicos.tecnicosdaEmpresa();

        }
        lazyItems = new ItemLazyList(Items);

    }

    public void associar() {
        System.out.println("Item : " + itemSelecionado.getCodigoItem());

        this.itemSelecionado = cadastroItemService.salvar(this.itemSelecionado);
        FacesUtil.addInfoMessage("Técnico Associado com sucesso!");
    }

    public void limpar(Item item) {
        item.setTecnicos(null);
        FacesUtil.addInfoMessage("Técnico");
    }

    public Item getItemSelecionado() {

        return itemSelecionado;
    }

    private boolean existeItemComProduto(Usuario encarregado) {
        boolean existeItem = false;

        for (Usuario usuario : this.getItemSelecionado().getTecnicos()) {
            if (encarregado.equals(usuario.getArea())) {
                existeItem = true;
                break;
            }
        }

        return existeItem;
    }

    public void setItemSelecionado(Item itemSelecionado) {
        System.out.println("---Codigo do Item no SetItem do Bean --- : " + itemSelecionado.getCodigo());

        this.itemSelecionado = itemSelecionado;
    }

    public ItemLazyList getLazyModel() {
        return lazyItems;
    }

    public List<Usuario> getTecnicosdaEmpresa() {
        return tecnicosdaEmpresa;
    }

    public void setTecnicosdaEmpresa(List<Usuario> tecnicosdaEmpresa) {
        this.tecnicosdaEmpresa = tecnicosdaEmpresa;
    }
<ui:define name="divMain">

            <script>
                function tratarAssociacao(args) {
                    if (!args.validationFailed) {
                        wassociaDlg.hide();
                    }
                }
            </script>
            <f:metadata>
                <f:event listener="#{associaItemsBean.inicializar}"
                    type="preRenderView" />

            </f:metadata>
            <h:form id="frmPesquisa">
                <h1>Tela de Associar Técnico ao Item</h1>
                <p:separator></p:separator>

                <p:dataTable id="itemsTable" value="#{associaItemsBean.lazyModel}"
                    var="item" style="margin-top: 20px;font-size:18px;"
                    emptyMessage="
                Nenhuma Item encontrado."
                    paginatorPosition="bottom" rows="10" paginator="true"
                    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                    currentPageReportTemplate="(Página. {currentPage} de {totalPages}) - (Registro. {startRecord} a {endRecord}) - ({totalRecords} Registros)"
                    paginatorAlwaysVisible="false" rowsPerPageTemplate="5,10"
                    lazy="true">

                    <f:facet name="header" style="size:100%">
                        Associação de  Técnico ao Item 
                    </f:facet>


                    <p:column sortBy="#{item.codigoItem}" filterBy="#{item.codigoItem}"
                        style="text-align: center; width: 100px">
                        <h:outputText value="#{item.codigoItem}" />
                        <f:facet name="header">
                            <h:outputText value="Código do Item" />
                        </f:facet>

                    </p:column>

                    <p:column headerText="Descricao" sortBy="#{item.descricao}"
                        filterStyle="width: 300px;" filterBy="#{item.descricao}"
                        filterMatchMode="startsWith"
                        style="text-align: left; width: 140px;">
                        <h:outputText value="#{item.descricao}">

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

                    <p:column headerText="Data do Item"
                        style="text-align: center; width: 140px">
                        <h:outputText value="#{item.dataItem}">
                            <f:convertDateTime pattern="dd/MM/yyyy" />
                        </h:outputText>
                    </p:column>

                    <p:column headerText="Tecnicos"
                        style="text-align: center; width: 140px">
                        <p:dataList value="#{item.tecnicos}" var="tecnico"
                            rendered="#{!empty item.tecnicos}">
                            #{tecnico.nome}
                        </p:dataList>
                    </p:column>



                    <p:column style="width: 100px; text-align: center">
                        <p:commandButton value="Associar"
                            update=":frmPesquisa:idassociaDlg" process="@this"
                            oncomplete="wassociaDlg.show();" icon="ui-icon-star"
                            title="Associar Item ao Técnico">
                            <f:setPropertyActionListener
                                target="#{associaItemsBean.itemSelecionado}" value="#{item}" />

                        </p:commandButton>
                        <p:commandButton value="Desfazer" update="itemsTable"
                            icon="ui-icon ui-icon-trash" action="#{associaItemsBean.limpar}"
                            style="margin-left: 8px" process="@this">
                            <f:setPropertyActionListener
                                target="#{associaItemsBean.itemSelecionado}" value="#{item}" />
                        </p:commandButton>
                    </p:column>

                </p:dataTable>

                <p:dialog widgetVar="wassociaDlg" id="idassociaDlg" height="150"
                    width="700" modal="true" closable="true" draggable="false"
                    resizable="false" header="Associar Item ao Técnico">

                    <p:dataList value="#{itemSelecionado.tecnicos}" var="tecnico">
                            #{tecnico.nome}
                        </p:dataList>

                    <p:outputLabel value="---Técnicos---" for="tecnico1" />
                    <p:selectManyMenu id="tecnico1" layout="pageDirection"
                        value="#{associaItemsBean.itemSelecionado.tecnicos}" 
                        >

                        <f:selectItems value="#{associaItemsBean.tecnicosdaEmpresa}"
                            var="tecnico" itemLabel="#{tecnico.nome}"  />
                    </p:selectManyMenu>

                    <f:facet name="footer" style="top:40%">
                        <p:commandButton value="Associar" icon="ui-icon-plus"
                            action="#{associaItemsBean.associar}" process="@form"
                            update="frmPesquisa:itemsTable"
                            oncomplete="tratarAssociacao(args)">

                        </p:commandButton>
                    </f:facet>

                </p:dialog>

            </h:form>

        </ui:define>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jpa hibernate primefaces ou faça a sua própria pergunta.