[RESOLVIDO]Bean não seta propriedade

Bom dia a todos,

Estou fazendo um cadastro simples de planos, estou usando primefaces2.2 jsf2 tomcat6 hibernate.
criei um pDialog que localiza os planos em uma pDataTable ele localiza e preenche o form corretamente, o problema é que quando eu tento inserir um novo registro sempre dá um erro no hibernate como se a propriedade não estivesse sendo setada, e verifiquei e realmente ela não está sendo setada, vou colocar os códigos:

PlanoBean

@ManagedBean
@ViewScoped
public class PlanoBean implements java.io.Serializable {

    private Usuario usuario;
    private Plano plano;
    private PlanoDAO planoDAO = new PlanoDAO();
    private List<Plano> planos;
    private boolean checkMaster;
    private String keyword;
    private String filter;

    public PlanoBean() {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        HttpSession session = request.getSession();
        usuario = (Usuario)session.getAttribute("usuario");
        if (usuario.getNivel().equals("MAS")){
            checkMaster = true;
        }
        else {
            checkMaster = false;
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", "Você não possui autorização para acessar este módulo"));
        }
        plano = new Plano();
        planoDAO.clear();
        planos = null;
    }

    public void novo(){
        plano = new Plano();
        planoDAO.clear();
    }

    public void salvar(){
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            plano = planoDAO.saveOrUpdate(plano);
            context.addMessage(null, new FacesMessage("Infomarção", "Registro salvo com sucesso!"));
        }
        catch (Exception e){
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", e.getMessage()));
        }
    }

    public void excluir(){
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            planoDAO.delete(plano);
            novo();
            context.addMessage(null, new FacesMessage("Infomarção", "Excluído com sucesso!"));
        }
        catch (Exception e){
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", e.getMessage()));
        }
    }

    public void searchPlanos(){
        planos = null;
        planoDAO.clear();
        planos = planoDAO.find(keyword, filter);
    }

    public void onRowSelect(SelectEvent event){
        planoDAO.clear();
        plano = (Plano)event.getObject();
        plano = planoDAO.get(plano.getCodigo());
    }

    public Plano getPlano() {
        return plano;
    }

    public void setPlano(Plano plano) {
        this.plano = plano;
    }

    public List<Plano> getPlanos() {
        return planos;
    }

    public void setPlanos(List<Plano> planos) {
        this.planos = planos;
    }

    public boolean isCheckMaster() {
        return checkMaster;
    }

    public void setCheckMaster(boolean checkMaster) {
        this.checkMaster = checkMaster;
    }

    public String getFilter() {
        return filter;
    }

    public void setFilter(String filter) {
        this.filter = filter;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    

}

plano.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.prime.com.tr/ui" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core"> <p:panel header="Plano" closable="true" id="panelPlano"> <p:messages id="msgs" showDetail="true"/> <c:if test="#{planoBean.checkMaster}"> <h:form prependId="false"> <p:commandButton value="Novo" image="ui-icon-document" actionListener="#{planoBean.novo}" update="panelPlano"/> <p:commandButton value="Salvar" image="ui-icon-disk" actionListener="#{planoBean.salvar}" update="panelPlano"/> <p:commandButton value="Excluir" image="ui-icon-trash" onclick="confirmation.show()"/> <p:commandButton value="Localizar" image="ui-icon-search" onclick="dlg.show()" update="result"/> <p:confirmDialog message="Deseja Realmente excluir registro?" showEffect="bounce" hideEffect="clip" header="Excluir" severity="alert" widgetVar="confirmation"> <p:commandButton value="Não" onclick="confirmation.hide()" type="button" /> <p:commandButton value="Sim" update="panelPlano" oncomplete="confirmation.hide()" actionListener="#{planoBean.excluir}" /> </p:confirmDialog> </h:form> <h:form prependId="false"> <h:panelGrid columns="3"> <h:outputLabel value="Código:"/> <h:outputLabel value="Descrição:"/> <h:outputLabel value="Plano com seguro:"/> <p:inputText id="codigo" size="10" value="#{planoBean.plano.codigo}" disabled="true"/> <p:inputText id="descricao" size="40" style="text-transform:uppercase" value="#{planoBean.plano.descricao}" required="true" requiredMessage="Digite a Descrição"> <f:converter converterId="plafama.util.UppercaseConverter"/> </p:inputText> <h:selectBooleanCheckbox id="seguro" value="#{planoBean.plano.seguro}"/> </h:panelGrid> </h:form> <p:dialog header="Localizar..." widgetVar="dlg" resizable="false" width="900" height="350" showEffect="clip" hideEffect="clip"> <h:form prependId="false"> <h:panelGrid columns="3"> <h:outputLabel value="Consultar por:"/> <h:outputLabel value="Filtro"/> <h:outputLabel value=""/> <p:inputText id="keyword" size="60" style="text-transform:uppercase" value="#{planoBean.keyword}" autocomplete="false"> <f:converter converterId="plafama.util.UppercaseConverter"/> </p:inputText> <h:selectOneMenu id="filter" value="#{planoBean.filter}"> <f:selectItem itemLabel="Descrição" itemValue="descricao"/> <f:selectItem itemLabel="Código" itemValue="codigo"/> </h:selectOneMenu> <p:commandButton value="Buscar" image="ui-icon ui-icon-search" update="result" actionListener="#{planoBean.searchPlanos}" ajax="true"/> </h:panelGrid> <p:dataTable id="result" var="plan" value="#{planoBean.planos}" selection="#{planoBean.plano}" rowSelectListener="#{planoBean.onRowSelect}" onRowSelectComplete="dlg.hide();" selectionMode="single" update="panelPlano" emptyMessage="Nenhum registro encontrado"> <p:column> <f:facet name="header">Código</f:facet> #{plan.codigo} </p:column> <p:column> <f:facet name="header">Descrição</f:facet> #{plan.descricao} </p:column> <p:column> <f:facet name="header">Seguro:</f:facet> #{plan.seguroFormatado} </p:column> </p:dataTable> </h:form> </p:dialog> </c:if> </p:panel> </ui:composition>

Quando salvo um registro já existente no banco de dados funciona perfeitamente
Quando salvo novo registro acontece a mensagem de exceção:

* not-null property references a null or transient value: plafama.model.Plano.descricao

Alguém já passou por isso, existe alguma solução? onde estou errando?

Só pra teste,tira esse <f:converter converterId=“plafama.util.UppercaseConverter”/>

Cara eu fiz pra desencargo de consiencia… mas não é esse o problema continua o mesmo erro…
eu utilizo o mesmo converter para outros forms não dá erro, o problema ta so quando eu tento inserir um novo registro, quando eu edito um já existente salva normalmente.

Consegui resolver… coloquei os p:commandButton e p:inputText para o mesmo form ai deu certo!