Problemas com JSF e primefaces

Eai pessoal estou com um probleminha aqui estou usando datamodel e datatable mais quando tento atualizar meu cadastro tenho um problema pois quando coloco meu datamodel.getRowData() ele me retorna o objeto correto porem quando mando salvar ele seta meu id como null se puderem me ajudar sou novado em web ainda.

Obrigado desde já

meu Bean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.bean.conta;

import br.com.modelo.DAO.DAOFactory;
import br.com.modelo.conta.TipoConta;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

@ManagedBean(name="tipoContaBean")
@RequestScoped
public class TipoContaBean {

    private TipoConta tipoConta  = new TipoConta();
    private DataModel listaTipoConta;

    public TipoContaBean() {
    }

    public void salvar(ActionEvent actionEvent){
        DAOFactory daoFactory = new DAOFactory();
        daoFactory.beginTransaction();
        daoFactory.getTipoContaDAO().inserir(tipoConta);
        daoFactory.commit();
    }

    public void prepararCriacao(ActionEvent actionEvent){
        tipoConta = new TipoConta();
    }

    public void prepararAlterarTipoConta(ActionEvent actionEvent){
        tipoConta = (TipoConta) (listaTipoConta.getRowData());
        System.out.print(this.tipoConta.getId());
    }
    
    public void alterar(ActionEvent actionEvent){
        DAOFactory daoFactory = new DAOFactory();
        daoFactory.beginTransaction();
        daoFactory.getTipoContaDAO().alterar(this.tipoConta);
        daoFactory.commit();
    }

    public String excluirTipoConta(){
        DAOFactory daoFactory = new DAOFactory();
        daoFactory.beginTransaction();
        TipoConta tipoContaTemp = (TipoConta) listaTipoConta.getRowData();
        daoFactory.getTipoContaDAO().remover(tipoContaTemp);
        daoFactory.commit();
        
        return "listarTipoDeConta";
    }

    public TipoConta getTipoConta() {
        return tipoConta;
    }

    public void setTipoConta(TipoConta tipoConta) {
        this.tipoConta = tipoConta;
    }

    public DataModel getListaTipoConta(){
        List<TipoConta> lista = new DAOFactory().getTipoContaDAO().listarTudo();
        listaTipoConta = new ListDataModel(lista);
        return listaTipoConta;
    }

}

minha view

[code]<?xml version='1.0' encoding='UTF-8' ?>

Gerenciador De Tipo de Contas

Manutenção de Tipo de Conta


    <p:dialog header="Cadastro de Tipo de Conta" widgetVar="dialogGerTipoContaAlterar" resizable="false" modal="true" showEffect="slide" width="500">
        <h:form prependId="false">
            <h:panelGrid columns="2" id="formTipoContaAlt" style="margin-bottom:10px">
                <h:outputLabel for="nomeAlt" value="Nome:"/>
                <h:inputText id="nomeAlt" value="#{tipoContaBean.tipoConta.nome}"/>
                
                <p:commandButton actionListener="#{tipoContaBean.alterar}" update="tabela" oncomplete="dialogGerTipoContaAlterar.hide()" value="Alterar"/>
            </h:panelGrid>
        </h:form>
    </p:dialog>

    <p:dialog header="Cadastro de Tipo de Conta" widgetVar="dialogGerTipoConta" resizable="false" modal="true" showEffect="slide" width="500">
        <h:form prependId="false">
            <h:panelGrid columns="2" id="formTipoConta" style="margin-bottom:10px">
                <h:outputLabel for="nome" value="Nome:"/>
                <h:inputText id="nome" value="#{tipoContaBean.tipoConta.nome}"/>
                <p:commandButton actionListener="#{tipoContaBean.salvar}" update="tabela" oncomplete="dialogGerTipoConta.hide()" value="Salvar"/>
            </h:panelGrid>
        </h:form>
    </p:dialog>

</h:body>

[/code]

Obrigado!!