Erro ao tentar carregar selectOneMenu após clicar no editar?

Ola pessoal, Estou tentando editar o objeto Fornecedor que possui a classe Endereço, consigo selecionar/buscar os dados mas não inserir os dados no selectOneMenu, que são Cidade e Estado, sendo que cidade esta dentro de Endereco.
Como preencher os selectOneMenu com com os objeto selecionado?

<p:dialog header="Cadastro de Fornecedores" widgetVar="dialogo"
            closeOnEscape="true" draggable="false" resizable="false"
            modal="true" closable="true" showEffect="fade" appendTo="@(body)"
            showHeader="fade">
            <h:form id="formCadastro">
                <h:panelGrid columns="2">

                    <p:outputLabel for="codigo" value="Código:" />
                    <p:inputText id="codigo"
                        value="#{fornecedorBean.fornecedor.codigo}"
                        placeholder="preenchimento automático!" readonly="true" size="23" />

                    <p:outputLabel for="razaoSocial" value="Razão Social:" />
                    <p:inputText id="razaoSocial"
                        value="#{fornecedorBean.fornecedor.razaoSocial}" maxlength="60"
                        size="55" />

                    <p:outputLabel for="nomeFantasia" value="Nome Fantasia:" />
                    <p:inputText id="nomeFantasia"
                        value="#{fornecedorBean.fornecedor.nomeFantasia}" maxlength="60"
                        size="55" />

                    <p:outputLabel for="responsavelLegal" value="Responsável Legal:" />
                    <p:inputText id="responsavelLegal"
                        value="#{fornecedorBean.fornecedor.responsavelLegal}"
                        maxlength="60" size="55" />

                    <p:outputLabel value="E-mail" />
                    <p:inputText value="#{fornecedorBean.fornecedor.email}"
                        maxlength="60" size="50" />

                        <p:separator />
                        <p:separator />

                        <p:outputLabel value="Logradouro:" />
                        <p:inputText value="#{fornecedorBean.endereco.rua}"
                            maxlength="60" size="55" />

                       
                        <p:outputLabel value="Estado:" />
                        <p:selectOneMenu id="estado" filter="true"
                            converter="omnifaces.SelectItemsConverter"
                            value="#{fornecedorBean.estado}">
                            <f:selectItem noSelectionOption="true"
                                itemLabel="Selecione um estado" />
                            <f:selectItems value="#{fornecedorBean.estados}" var="estado"
                                itemValue="#{estado}" itemLabel="#{estado.nome}" />
                            <p:ajax listener="#{fornecedorBean.popular}"
                                update=":formCadastro:cidade" />
                        </p:selectOneMenu>

                        <p:outputLabel for="cidade" value="Cidade:" />
                        <p:selectOneMenu id="cidade" filter="true" required="true"
                            requiredMessage="O campo 'Cidade' é obrigatório"
                            converter="omnifaces.SelectItemsConverter"
                            value="#{fornecedorBean.endereco.cidade}">
                            <f:selectItem noSelectionOption="true"
                                itemLabel="Selecione uma cidade" />
                            <f:selectItems value="#{fornecedorBean.cidades}" var="cidade"
                                itemValue="#{cidade}" itemLabel="#{cidade.nome}" />
                        </p:selectOneMenu>
                    </h:panelGrid>
                    <center>
                        <h:panelGrid columns="2">
                        
                            <p:commandButton value="Salvar"
                                actionListener="#{fornecedorBean.salvar}"
                                oncomplete="PF('dialogo').hide();"
                                update=":formListagem:tabela">
                            </p:commandButton>
                                
                            <p:commandButton value="Fechar"
                                oncomplete="PF('dialogo').hide();" />
                                
                        </h:panelGrid>
                    </center>
            </h:form>
        </p:dialog>`

FornecedorBean

public void editar(ActionEvent evento) {
    try {
           fornecedor = (Fornecedor)evento.getComponent().getAttributes().get("fornecedorSelecionado");   EnderecoDAO enderecoDAO = new EnderecoDAO();
endereco= enderecoDAO.buscar(fornecedor.getCodigo());

fornecedor.setEndereco(endereco);
 endereco.setCidade(endereco.getCidade());


EmpresaDomain

@MappedSuperclass
public class Empresa extends GenericDomain {    

    private static final long serialVersionUID = 1L;

    @Column(name="razao_social", length = 60, nullable = false)
    private String razaoSocial;
    
    @Column(name="nome_fantasia", length = 60, nullable = false)
    private String nomeFantasia;
   
@ManyToOne
@JoinColumn(nullable = true)
private Endereco endereco;`

FornecedorDomain

public class Fornecedor extends Empresa {

    @Column(name="responsavel_legal", length = 60, nullable = false)
    private String responsavelLegal;

Pessoal esta ai a solução deste problema…

public void editar(ActionEvent evento) {
     try {
        
            fornecedor = (Fornecedor) evento.getComponent().getAttributes().get("fornecedorSelecionado");
   EnderecoDAO enderecoDAO = new EnderecoDAO();
   endereco = enderecoDAO.buscar(fornecedor.getCodigo());

fornecedor.setEndereco(endereco);

estado = endereco.getCidade().getEstado();
EstadoDAO estadoDAO = new EstadoDAO();

estados = estadoDAO.listar("nome");

CidadeDAO cidadeDAO = new CidadeDAO();
cidades = cidadeDAO.buscarPorEstado(estado.getCodigo()); 

    } catch (RuntimeException erro) {
        Messages.addFlashGlobalError("Ocorreu um erro ao tentar selecionar um fornecedor!");
        erro.printStackTrace();
    }
}