O Famoso Erro :Erro de conversão ao definir o valor XXX para 'null Converter'

Boa noite

Estou com o famoso erro “Erro de conversão ao definir o valor XXX para ‘null Converter’.” já vi vários tópicos aqui mesmo no GUJ, Showcase do primefaces e não consegui resolver (em partes). Na minha aplicação Tem um cadastro de usuário, dentro dele tenho que salvar uma Equipe (é como se fosse uma empresa terceirizada) por um SelectOneMenu mas na hora de salvar dá o famoso erro. Bom vou colocar os códigos:

Aqui é só o método do Dao que lista as equipes e EquipeDao:

@SuppressWarnings("unchecked")
	public List<Equipe> listar(){
		EntityManager manager = Persistence.createEntityManagerFactory("APRSAS").createEntityManager();
		javax.persistence.Query q =  (javax.persistence.Query) manager.createQuery("SELECT e FROM Equipe e");
        List<Equipe> equipes = ((javax.persistence.Query) q).getResultList();
        
        return equipes;
	}

Aqui o Bean do Usuario:

@Entity
public class Usuario implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="userId", unique=true, nullable=false)
	private Integer userId;
	
	@Column(name="ativo")
	private boolean ativo;
	
	@Column(name="userNome")
	private String userNome;
	
	@Column(name="login")
	private String login;
	
	@Column(name="senha")
	private String senha;
	
	@Column(name="email")
	private String email;
	
	@OneToOne(fetch = FetchType.LAZY)
	@PrimaryKeyJoinColumn
    private Equipe equipe;	
	
	@Column(name="permissaoAcesso")
	private int permissaoAcesso;	
	
//get set .....
}

A classe responsável em carregar a lista:

@ManagedBean(name="equipeService", eager = true)
@SessionScoped
public class EquipeService {
	
	private List<Equipe> equipes;
	EquipeDao equipedao = new EquipeDao();	
	
	public List<Equipe> getEquipes() {
			equipes = equipedao.listar();
		return equipes;
	}
}

Depois do erro descobri que tinha que criar um converter, então peguei esse do showcase do Primefaces:

@FacesConverter("equipeConverter")
public class EquipeConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
		if(value != null && value.trim().length() > 0) {
            try {
                EquipeService service = (EquipeService) fc.getExternalContext().getApplicationMap().get("equipeService");
                return service.getEquipes().get(Integer.parseInt(value));
            } catch(NumberFormatException e) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO AO CARREGAR EQUIPES", "Equipe não encontrada."));
            }
        }
        else {
            return null;
        }
    }
 
    public String getAsString(FacesContext fc, UIComponent uic, Object object) {
        if(object != null) {
            return String.valueOf(((Equipe) object).getEquipeId());
        }
        else {
            return null;
        }
    }   
}

E o pedaço do xhtml que tem o selectonemenu:

<p:outputPanel id="displayEquipe1">
					<p:outputLabel value="Equipe:"
						rendered="#{usuarioAddEditMB.usuario.permissaoAcesso == '3'}" />
				</p:outputPanel>
				<p:outputPanel id="displayEquipe2">
					<p:selectOneMenu id="Equipe"
						value="#{usuarioAddEditMB.usuario.equipe}"
						converter="equipeConverter"
						rendered="#{usuarioAddEditMB.usuario.permissaoAcesso == '3'}"
						style="width:125px">
						<f:selectItem itemLabel="Selecione" itemValue="#{null}" />
						<f:selectItems value="#{equipeService.equipes}" var="equipe"
							itemLabel="#{equipe.equipeNome}" itemValue="#{equipe}" />
					</p:selectOneMenu>
				</p:outputPanel>

(obs. ignorem aquele rendered, é só uma regra de negocio)

Depois que eu criei o conveter não carregava mais a pagina e começou aparecer esse erro: java.lang.String cannot be cast to … mas em um tópico aqui do GUJ vi que tinha que colocar um null no itemValue, fiz isso e a pagina voltou a carregar, so que agora quando eu mando salvar dá um erro , mas no console só aparece escrito NULL, não sei mas o que fazer para arrumar isso.

EDITADO:

Eu tenho uma busca por ID no DAO:

public Equipe getById(int equipeid) {
		EntityManager manager = Persistence.createEntityManagerFactory("APRSAS").createEntityManager();
		Equipe equipe = null;
		try{
			
			equipe =  manager.find(Equipe.class, equipeid);
		} catch (Exception e) {
            e.printStackTrace();
        }
 
        return equipe;		
	}

Acabei mudando meu converter conforme pesquisas, cheguei nesse resultado:

    @Override
	public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
		if (value != null && value.trim().length() > 0) {
			try {
				return new EquipeDao().getById(Integer.parseInt(value));
			} catch (NumberFormatException e) {
				throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO AO CARREGAR EQUIPES",
						"Equipe não encontrada."));
			}
		} else {
			return null;
		}
	}

	public String getAsString(FacesContext fc, UIComponent uic, Object object) {
		if (object != null && object instanceof Equipe) {
			return ((Equipe) object).getEquipeId().toString();
		}
		return null;

	}

mas agora que no throw:

throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO AO CARREGAR EQUIPES",
						"Equipe não encontrada."));