[RESOLVIDO] Primefaces + JSF - Erro no SelectOneMenu - Erro de validação: o valor não é válido

Boa tarde galera, tudo certo?

Estou comecando agora com JavaWeb e estou usnado JSF2 + PrimeFaces + Hibernate e estou com este erro quando vou persistir a informacao do SelectOneMenu no banco, ele me retorna um erro apenas no navegador “Erro de validação: o valor não é válido” e nao me mostra nada no eclipse de erro…ja entrei em varios topicos e foruns porem nao consegui selecionar ainda, preciso dar andamento no meu TCC…quem puder ajudar agradeco, vou postar aqui minhas classes…
valew

Beans Estado e Cidade:

[code]@Entity
public class Estado implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private Integer codigo;

private String nome;
private String sigla;


public Integer getCodigo() {
	return codigo;
}
public void setCodigo(Integer codigo) {
	this.codigo = codigo;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getSigla() {
	return sigla;
}
public void setSigla(String sigla) {
	this.sigla = sigla;
}

}


@Entity
@Table(name=“Cidade”)
public class Cidade implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private Integer codigo;
private String nome;

@ManyToOne
@JoinColumn(name="codcid")
private Estado estado;


public Integer getCodigo() {
	return codigo;
}
public void setCodigo(Integer codigo) {
	this.codigo = codigo;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public Estado getEstado() {
	return estado;
}
public void setEstado(Estado estado) {
	this.estado = estado;
}

}
[/code]

MB:

@ManagedBean
@RequestScoped
public class CidadeMB{
	
	private Cidade c = new Cidade();
	private List<Cidade> listaCidade = new ArrayList<Cidade>();
	private List<Estado> listaEstado = new ArrayList<Estado>();
    private List<SelectItem> ListarPaisesCombo = new ArrayList<SelectItem>();
	private DataTable dttable;

	
	
	public String cadastrar(){
		new CidadeDAO().Salvar(c);
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Cidade cadastrada com sucesso!",""));
		return "";
	}
	
	public void remover(ActionEvent act){
		new CidadeDAO().excluir(listaCidade.get(dttable.getRowIndex()));
	}
	
	
	
	
	public Cidade getC() {
		return c;
	}
	public void setC(Cidade c) {
		this.c = c;
	}
	public List<Cidade> getListaCidade() {
		listaCidade = new CidadeDAO().listar();
		return listaCidade;
	}
	public void setListaCidade(List<Cidade> listaCidade) {
		this.listaCidade = listaCidade;
	}
	public DataTable getDttable() {
		return dttable;
	}
	public void setDttable(DataTable dttable) {
		this.dttable = dttable;
	}

	public List<Estado> getListaEstado() {
		listaEstado = new EstadoDAO().listar();
		return listaEstado;
	}

	public void setListaEstado(List<Estado> listaEstado) {
		this.listaEstado = listaEstado;
	}

	public List<SelectItem> getListarPaisesCombo() {    
	        List<Estado> lista = new EstadoDAO().listar();  
	          
	        EstadoDAO pd = new EstadoDAO();  
	                  
	        for (int i = 1; i <= lista.size(); i++) {  
	            SelectItem item = new SelectItem();           
	            item.setLabel(lista.get(i - 1).getNome());                        
	            item.setValue(pd.findById(lista.get(i - 1).getCodigo()));  
	            ListarPaisesCombo.add(item);  
	        }  
	                  
	        return ListarPaisesCombo;  
	    }  

	public void setListarPaisesCombo(List<SelectItem> listarPaisesCombo) {
		ListarPaisesCombo = listarPaisesCombo;
	}

}

xhtml:

<h:head></h:head> 
<body>
	<h:form id="form">
    	<p:panel id="painel" header="Cadastro de Cidade">
    	<p:messages id="msgs" autoUpdate="true" closable="true"/>
    		<p:panelGrid columns="2">
    			
    			<h:outputText value="Nome: " />
    			<p:inputText id="nome" value="#{cidadeMB.c.nome}" required="true" onfocus="this.value='';"/>
    			
    			<p:outputLabel for="estado" value="Estado: "/>
    			<p:selectOneMenu id="estado" value="#{cidadeMB.c.estado}" converter="ConverterEstado">
    				<f:selectItem itemLabel="Selecione o Estado" itemValue="0"/>
    				<f:selectItems value="#{cidadeMB.listarPaisesCombo}" />
    			</p:selectOneMenu>
    		</p:panelGrid>
    		<p/>
    		<p:commandButton value="Cadastrar" actionListener="#{cidadeMB.cadastrar}"/>
    	</p:panel>
    </h:form>
</body> 
</html>

Converter:

@FacesConverter(value = "ConverterEstado")
public class ConverterEstado implements Converter{

	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
		try {
			if (value != null && !value.equals("")) {
				EstadoDAO est = new EstadoDAO();
				return est.findById(Integer.parseInt(value));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
		if (value instanceof Estado) {
			Estado est = (Estado) value;
			return String.valueOf(est.getCodigo());
			}
			return "";
	}
	
	
}

algueem aii conseguiu ver algo?

Consegui.
Tive que sobrescrever os metodos hashcode e equal das minhas classes beans (Cidade e Estado).
Resolvido