Duvida no Converter

Bom dia,
tenho duas tabelas com relacionamento, seleciono atraves de um selectonemenu.Sem a opção converter seleciono os indices dos valores corretos, quando ligo invoco a classe converter os os valores dos indices fica -1.

Classe Converter

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

    private int index = -1;

    /*
     * (non-Javadoc)
     *
     * @see
     * javax.faces.convert.Converter#getAsObject(javax.faces.context.FacesContext,
     * javax.faces.component.UIComponent, java.lang.String)
     */
    @Override
    public Object getAsObject(FacesContext context, UIComponent component,
            String value) throws ConverterException {
        Object result = null;
        if (StringUtils.isNotBlank(value)) {
            Object selectedItem = this.getSelectedItemByIndex(component,
                    Integer.parseInt(value));
            result = selectedItem;
            if (selectedItem != null) {
                if (selectedItem instanceof SelectItem) {
                    result = ((SelectItem) selectedItem).getValue();
                }
            }
        }

        return result;
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext,
     * javax.faces.component.UIComponent, java.lang.Object)
     */
    @Override
    public String getAsString(FacesContext context, UIComponent component,
            Object value) throws ConverterException {
        List<Object> items = this.getSelectItems(component);
        int index = items.indexOf(value);
        return String.valueOf(index);
    }

    /**
     * Obtem o SelecItem de acordo com a opção selecionada pelo usuário
     */
    protected Object getSelectedItemByIndex(UIComponent component, int index) {

        List<Object> items = this.getSelectItems(component);
        int size = items.size();

        if (index > -1 && size > index) {
            return items.get(index);
        }

        return null;
    }

    protected List<Object> getSelectItems(UIComponent component) {

        List<Object> items = new ArrayList<Object>();

        int childCount = component.getChildCount();
        if (childCount == 0) {
            return items;
        }

        List<UIComponent> children = component.getChildren();
        for (UIComponent child : children) {
            if (child instanceof UISelectItem) {
                this.addSelectItem((UISelectItem) child, items);
            } else if (child instanceof UISelectItems) {
                this.addSelectItems((UISelectItems) child, items);
            }
        }

        return items;
    }

    protected void addSelectItem(UISelectItem uiItem, List<Object> items) {

        boolean isRendered = uiItem.isRendered();
        if (!isRendered) {
            items.add(null);
            return;
        }

        Object value = uiItem.getValue();
        SelectItem item;

        if (value instanceof SelectItem) {
            item = (SelectItem) value;
        } else {
            Object itemValue = uiItem.getItemValue();
            String itemLabel = uiItem.getItemLabel();
            // JSF throws a null pointer exception for null values and labels,
            // which is a serious problem at design-time.
            item = new SelectItem(itemValue == null ? "" : itemValue,
                    itemLabel == null ? "" : itemLabel, uiItem.getItemDescription(),
                    uiItem.isItemDisabled());
        }

        items.add(item);
    }

    @SuppressWarnings("unchecked")
    protected void addSelectItems(UISelectItems uiItems, List<Object> items) {

        boolean isRendered = uiItems.isRendered();
        if (!isRendered) {
            items.add(null);
            return;
        }

        Object value = uiItems.getValue();
        if (value instanceof SelectItem) {
            items.add(value);
        } else if (value instanceof Object[]) {
            Object[] array = (Object[]) value;
            for (int i = 0; i < array.length; i++) {
                if (array[i] instanceof SelectItemGroup) {
                    this.resolveAndAddItems((SelectItemGroup) array[i], items);
                } else {
                    items.add(array[i]);
                }
            }
        } else if (value instanceof Collection) {
            Iterator<Object> iter = ((Collection<Object>) value).iterator();
            Object item;
            while (iter.hasNext()) {
                item = iter.next();
                if (item instanceof SelectItemGroup) {
                    this.resolveAndAddItems((SelectItemGroup) item, items);
                } else {
                    items.add(item);
                }
            }
        } else if (value instanceof Map) {
            for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) value)
                    .entrySet()) {
                Object label = entry.getKey();
                SelectItem item = new SelectItem(entry.getValue(),
                        label == null ? (String) null : label.toString());
                if (item instanceof SelectItemGroup) {
                    this.resolveAndAddItems((SelectItemGroup) item, items);
                } else {
                    items.add(item);
                }
            }
        }
    }

    protected void resolveAndAddItems(SelectItemGroup group, List<Object> items) {
        for (SelectItem item : group.getSelectItems()) {
            if (item instanceof SelectItemGroup) {
                this.resolveAndAddItems((SelectItemGroup) item, items);
            } else {
                items.add(item);
            }
        }
    }




}

Pagina xhtml

<h:form  prependId="false" id="cadastroUsuario">
                   <p:panel  header="Cadastro de Usuários" style="width: 500px;margin-left: 24%;">  
                       <h:panelGrid columns="2" cellpadding="5">  
                           <h:outputText value="Nome: "/>
                           <h:inputText id="nome" value="#{UsuarioBean.usuario.nome}" size="40" maxlength="50" autocomplete="off"   required="true" requiredMessage="Campo Nome é Obrigatório"/>

                           <h:outputText  value="Bairro:" />
                           <h:selectOneMenu id="sele1" onclick="mensage()" value="#{UsuarioBean.usuario.bairro}" converter="objectConverter" required="true" requiredMessage="Campo Bairro Obrigatorio">
                               <f:selectItems value="#{BairroBean.bairros}" var="lisBairro" itemLabel="#{lisBairro.nome}" itemValue="#{lisBairro.id}"/>
                           </h:selectOneMenu>  
                               
                           <p:commandButton immediate="true" ajax="false" value="Voltar" action="voltar" style="background: #999999; color:  #ffffff; " icon="ui-icon-back" />
                           <p:commandButton ajax="false" value="Cadastrar" update="cadastroUsuario" actionListener="#{UsuarioBean.cadastrar()}" style="background: #999999; color:  #ffffff; " icon="ui-icon-disk" />
                       </h:panelGrid>
                   </p:panel>
               </h:form>