<p:selectOneMenu Erro no convert

Boa tarde a todos,
No meu projeto tenho um relacionamento com uma tabela associativa com atributos e estou com problemas para fazer o convert para o selectOneMenu. Vou colocar aqui os códigos das classes, alguém poderia me ajudar a encontrar a solução? tentei varios converts mas nenhum atendeu ao meu caso…

A Tabela Artesao e a Tabela MateriaPrima migram suas chaves primárias para a tabela ArtesaoMaterial que possui dois atributos.

cadastroArtesao.xhtml

<p:outputLabel value="Matéria Prima" for="matprima" />
     <p:selectOneMenu id="matprima" value="#{artesaobean.materiasPrimasSelect}" >
	 <f:selectItems value="#{materiaprimabean.materias}"/>
	 <f:converter converterId="materiaPrimaConverter"/>
     </p:selectOneMenu>

Mapeamento na Tabela Artesão


@Entity
@Table(name = "artesao")
public class Artesao implements Serializable{

 // ...ATRIBUTOS

@OneToMany(fetch=FetchType.LAZY, mappedBy="pk.artesao")
	private List <ArtesaoMaterial> materiasprimas;

//...GETTERS AND SETTERS

public List<ArtesaoMaterial>  getMateriasPrimas() {
		if(materiasprimas == null)
			materiasprimas = new ArrayList<ArtesaoMaterial>();
		return materiasprimas;
	}

	public void setMateriasPrimas(List<ArtesaoMaterial> materiasprimas) {
		this.materiasprimas = materiasprimas;
	}

Mapeamento na Tabela MateriaPrima

@Entity
public class MateriaPrima implements Serializable{

//...ATRIBUTOS

@OneToMany(fetch=FetchType.LAZY, mappedBy="pk.materiaPrima")
	private List <ArtesaoMaterial> artesoes;

//...GETTERS AND SETTERS

public List<ArtesaoMaterial> getArtesoes() {
		return artesoes;
	}

	public void setArtesoes(List<ArtesaoMaterial> artesoes) {
		this.artesoes = artesoes;
	}


//HASH CODE AND EQUALS

Mapeamento da Tabela Associativa ArtesaoMaterial

@Entity
@Table(name="ArtesaoMaterial")
@AssociationOverrides({
		@AssociationOverride(name = "idArtesao",
				joinColumns = @JoinColumn(name = "idArtesao", insertable = false, updatable = false)),
		@AssociationOverride(name = "idMateriaPrima",
				joinColumns = @JoinColumn(name = "idMateriaPrima", insertable = false, updatable = false))})

public class ArtesaoMaterial implements Serializable{
	
	@EmbeddedId
	private ArtesaoMaterialId pk = new ArtesaoMaterialId();

        //...ATRIBUTOS GETTERS AND SETTERS

MateriaPrimaBean.java

@ManagedBean(name = "materiaprimabean")
@ViewScoped
public class MateriaPrimaBean {

	
	private Map<String, MateriaPrima> materias;
	private MateriaPrimaDAO materiaPrimaDAO;
	
	public MateriaPrimaBean() {
		materiaPrimaDAO = new MateriaPrimaDAO();
		
		materias = new HashMap<String, MateriaPrima>();
		for(MateriaPrima mat : materiaPrimaDAO.findAll()) {
			materias.put(mat.getNomeMateriaPrima(), mat);
		}
	}

	public Map<String, MateriaPrima> getMaterias() {
		return materias;
	}

	public void setMaterias(Map<String, MateriaPrima> materias) {
		this.materias = materias;
	}

}

MateriaPrimaConverter.java

@FacesConverter(value = "materiaPrimaConverter" )
public class MateriaPrimaConverter implements Converter {
	
	
	@Override
	public Object getAsObject(FacesContext ctx, UIComponent component, String value) {
		if(value != null) {
			return this.getAttributesFrom(component).get(value);
		}
		
		return null;
	}
	
	
	@Override
	public String getAsString(FacesContext ctx, UIComponent component, Object value) {
		if(value instanceof MateriaPrima) {
			MateriaPrima materiaPrima =  (MateriaPrima) value;
			if(materiaPrima != null && materiaPrima instanceof MateriaPrima && materiaPrima.getIdMateriaPrima() != null) {
				component.getAttributes().put(materiaPrima.getIdMateriaPrima().toString(), materiaPrima);
				return materiaPrima.getIdMateriaPrima().toString();
			}
		}		
		return "";
	}

	protected void addAttribute(UIComponent component, MateriaPrima o) {
		
		//String key = o.getMateriaPrima().getIdMateriaPrima().toString();
		String key = o.getIdMateriaPrima().toString();
		this.getAttributesFrom(component).put(key, o);
		
		}

		protected Map<String, Object> getAttributesFrom(UIComponent component)	{
			
		return component.getAttributes();
		
		}

}

O erro que é gerado é este…

SEVERE: javax.faces.component.UpdateModelException: javax.el.ELException: /cadastroArtesao.xhtml @303,85 value="#{artesaobean.materiasPrimasSelect}": Cannot convert sedrap.model.MateriaPrima@20 of type class sedrap.model.MateriaPrima to interface java.util.List

O SelectCheckBoxMenu funciona perfeitamente, mas eu não posso deixar marcar mais de uma MatériaPrima… Sabe dizer também pq com o SelectCheckBoxMenu funciona?
desde já agradeço qualquer ajuda.