1
Managed Bean
package com.algaworks.erp.controller;
import java.io.Serializable;
import java.util.List;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
import com.algaworks.erp.model.Categoria;
import com.algaworks.erp.repository.Categorias;
@Named
@ViewScoped
public class ConsultaCategoriaBean implements Serializable {
    private static final long serialVersionUID = 1L;
    @Inject private Categorias categorias;
    /**
     * interface do primefaces
     * 1º nível de nó
     * treenode que não aparece na arvore, é um no invisivel
     */
    private TreeNode raiz; 
    public void consultar(){
        List<Categoria> categoriasRaizes = categorias.raizes();
        this.raiz = new DefaultTreeNode("Raiz", null);
        adicionarNos(categoriasRaizes,this.raiz);
    }
    private void adicionarNos(List<Categoria> categorias, TreeNode pai){
        /**
         * Iterando na lista e adicionar 
         */
        for(Categoria categoria : categorias){
            /**Instanciando um novo nó
             * passando o valor(categoria), pai
             * no - pai - categoria atual
             */
            TreeNode no = new DefaultTreeNode(categorias, pai);
            //raiz.getChildren().add(no);
            /**chamar adicionandoNos recursivamente passsando o valor(categoria.getSubcategorias(), pai(no))
             * para carregar subcategorias para a categoria atual (no)
             * Consulta lazy para subCategorias
             */
            adicionarNos(categoria.getSubcategorias(), no);
        }
    }
    public TreeNode getRaiz() {
        return raiz;
    }![inserir a descrição da imagem aqui][1]
}
Facelet
<!DOCTYPE html>
<!-- DEFINICAO DO TEMPLATE A SER UTILIZADO E IMPORTACAO DAS NAMESPACES-->
<ui:composition template="/WEB-INF/templates/Layout.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:f="http://xmlns.jcp.org/jsf/core"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:p="http://primefaces.org/ui" >
<!-- ação que sera chamada toda vez que a view for carregada -->
        <f:metadata>
            <f:viewAction action="#{consultaCategoriaBean.consultar}" />
        </f:metadata>
O que for escrito fora do dine nao sera exibido     
        <!-- DEFINICAO DO CORPO -->
    <ui:define name="corpo">
        <h1>Componente Tree Primefaces</h1>
        <h:form id="frmCategorias">
            <p:tree value="#{consultaCategoriaBean.raiz}" 
                    var="cat" 
                    dynamic="true"
                    style="width:700px; height:400px">
                <p:treeNode>
                    <h:outputText value="#{cat}" />
                </p:treeNode>
            </p:tree>
        </h:form>
    </ui:define>
</ui:composition>
						
Thank you very much for the indication, I made the change <h:outputText value="#{cat.Descricao}" /> but, gave an exeption.
– Carl Edwin Antonio Nascimento
@Carl The object has to have a property
descricaoor equivalent. Which Exception?– utluiz