Consulta no Hibernate

Boa noite pessoal, estou começando a me aprofundar no hibernate e não consigo fazer uma busca de dados no banco por exemplo: Tenho id,nome,código no banco (1,J,j1) e queria quando passasse o id=1 mostrasse em tela os valores J,j1 para poder editar, segue o código que estou tentando:

Pessoa.class


@ManagedBean
	@SessionScoped
	@Entity
	@Table(name="pessoa")
	public class Pessoa implements Serializable {
		
		@Id
		@GeneratedValue
	    private Long id;
		@Column(name="nome")
	    private String nome;
		@Column(name="codigo")
	    private String codigo;
	    
	    /** Creates a new instance of Pessoa */
	    public Pessoa() {
	    }
	    public Pessoa(Long id, String nome, String codigo) {

			this.id = id;
			this.nome = nome;
			this.codigo = codigo;
		}

    //get´s and set´s
    // hashCode e equals

PessoaDAO.class


public class PessoaDAO implements Serializable {

	private Pessoa pessoaEdit;

	public String Inicializar() {
		this.pessoaEdit = new Pessoa();
		return "Cadastrado";
	}

	public PessoaDAO(Pessoa pessoaEdit) {
		this.pessoaEdit = pessoaEdit;
	}

	public PessoaDAO() {
		this.pessoaEdit = new Pessoa();
	}

	public void SalvarPessoa(ActionEvent event) {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			new PessoaFaces().salvar(this.pessoaEdit);
			this.pessoaEdit = new Pessoa();
			FacesMessage msg = new FacesMessage("Pessoa Salva com Sucesso!");
			msg.setSeverity(FacesMessage.SEVERITY_INFO);
			context.addMessage(null, msg);

		} catch (PessoaException e) {
			context.addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, e
							.getMessage(), e.getMessage()));
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					"Erro inesperado ao salvar a pessoa!");
			JOptionPane.showMessageDialog(null, msg);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}

	}

	public Pessoa getPessoaEdit() {
		return pessoaEdit;
	}

	public void setPessoaEdit(Pessoa pessoaEdit) {
		this.pessoaEdit = pessoaEdit;
	}

}

PessoaFaces.class

@ManagedBean
@SessionScoped
public class PessoaFaces implements Serializable  {
    private Pessoa pessoaEdicao = new Pessoa();
    private int Escolha;
    private Long id;
    
    
    
    public PessoaFaces() {
    }

public List<Pessoa> pesquisarPorId(Long id){
        Session session = HibernateUtil.getSession();
        try{
        	System.out.println("Código Identificador: "+id);
        	Criteria c = session.createCriteria(Pessoa.class);
        	c.add(Restrictions.eq("id", id));   
      
            return  c.list();
        
        	
        }finally{
            session.close();
        }
    }
public void Consultar(ActionEvent event){
	this.pessoaEdicao = (Pessoa) new PessoaFaces().pesquisarPorId(id);
}

buscaPessoa.jsp


<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Buscar Pessoa</title>
</head>
<body>
<f:view>
<h:form>
<fieldset>
<legend>Busca de Pessoa</legend>  
<h:panelGrid columns="2" id="Painel1">
<h:outputText value="ID: "></h:outputText>
<h:inputText value="#{PessoaFaces.id}"></h:inputText>

<h:outputText value="Nome: " id="OTNome"></h:outputText>
<h:inputText id="Cnome" value="#{PessoaDAO.pessoaEdit.nome}"></h:inputText>

<h:outputText value="Codigo: " id="OTCodigo"></h:outputText>
<h:inputText id="CodigoI" value="#{PessoaDAO.pessoaEdit.codigo}"></h:inputText>

<h:commandButton id="BuscarPessoa" value="Buscar" actionListener="#{PessoaFaces.Consultar}"></h:commandButton>
<h:commandButton id="Cancelar" value="Limpar" action="Reset"></h:commandButton>
</h:panelGrid>
</fieldset>
</h:form>
</f:view>
</body>
</html>

Desde já agradeço pela ajuda.