SelectOneMenu converter e equals

Olá… Tenho um selectOneMenu que é atualizado com ajax, após o pais ser selecionado…
Quando utilizo o escopo de Request e utilizo os metodos equals e hash do super(AbstractEntity), o item que vem selecionado no <f:selectItems> é o último da lista… no caso dos estados, Tocantins…
Não sei porque isto acontece…
Quando utilizo o escopo de Sessão e sobrescrevo os metodos do super no meu Estado.class, o erro não ocorre…
Alguem sabe porque disto? Não queria utilizar Session…

selectOneMenu

						<p:selectOneMenu value="#{estadoBean.estado}" id="estadoRg"
							converter="entityConverter">
							<p:ajax listener="#{pessoaBean.adicionarEstado('rg')}">
							</p:ajax>
							<f:selectItems value="#{estadoBean.estados}" var="estado"
								itemLabel="#{estado.sigla}" itemValue="#{estado}"></f:selectItems>
						</p:selectOneMenu>

Este é converter:

@FacesConverter(value = "entityConverter")
public class EntityConverter implements Converter {
 
    public Object getAsObject(FacesContext ctx, UIComponent component,
            String value) {
        if (value != null) {
            return this.getAttributesFrom(component).get(value);
        }
        return null;
    }
 
    
    public String getAsString(FacesContext ctx, UIComponent component,
            Object value) {
 
        if (value != null && ! "".equals(value)) {
            AbstractEntity entity = (AbstractEntity) value;
 
            if (entity.getId() != null) {
                this.addAttribute(component, entity);
 
                if (entity.getId() != null) {
                    return String.valueOf(entity.getId());
                }
                return (String) value;
            }
        }
        return "";
    }
 
    private void addAttribute(UIComponent component, AbstractEntity o) {
        this.getAttributesFrom(component).put(o.getId().toString(), o);
    }
 
    private Map<String, Object> getAttributesFrom(UIComponent component) {
        return component.getAttributes();
    }
 
}

Este é o hash e o equals do AbstractEntity:

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }
 
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        AbstractEntity other = (AbstractEntity) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }

E este o hash e equals do Estado (que sobrescreve o AbstractEntity):

	public boolean equals(Object other) {
		return other instanceof Estado && (id != null) ? id
				.equals(((Estado) other).id) : (other == this);
	}
	
	public int hashCode() {
		return id != null ? this.getClass().hashCode() + id.hashCode() : super
				.hashCode();
	}

Com certeza o problema não está no escopo e sim na sua implementação.
Você quer q sempre venha o primeiro estado por ordem alfabética selecionado?

Sim,… a lista está em ordem alfabética,… e o valor para qual é setado o selectOneMenu (estadoBean.estado), até forcei : estado = estados.get(0)… mas não adianta…

Por que não deixa no escopo da view?

Esse não me parece ser o tipo de coisa a ser feito em escopo de request.