Duvida Cast de um List

Prezados estou começando em java EE e estou com a seguinte erro ao incluir um equipamento “Erro: modelo.Fabricante cannot be cast to java.util.List”

    @ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="equip_fabr",
joinColumns=@JoinColumn(name="id_equip"),
inverseJoinColumns=@JoinColumn(name="id_fabricante"))
private  List<Fabricante> fabricantes;
   @ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="equip_fabr",
joinColumns=@JoinColumn(name="id_fabricante"),
inverseJoinColumns=@JoinColumn(name="id_equip"))
private List<Equip> equips;
                     Equip equip = new Equip();	
		 Fabricante fabr = new Fabricante();
		 fabr.setNome(request.getParameter("cboFabricante"));
		 equip.setFabricantes((List<Fabricante>) fabr);
                       DaoEquip.incluirEquip(equip);

Olá magricelinho,

O cast vai na erro pq a sua variavel fabr não é do tipo List.

O correto é vc criar uma lista adicionar esse objeto fabr nessa lista e passar como parametro no setFabricante essa lista

Assim:

Equip equip = new Equip();	
Fabricante fabr = new Fabricante();
//Criando uma lista de fabricantes (inicialmente vazia) 
List<Fabricante> fabricanteList = new ArrayList<Fabricante>();

//Adcionando um objeto nessa lista
fabricanteList.add(fabr);

fabr.setNome(request.getParameter("cboFabricante")); 
//Passando a lista como parametro no set
equip.setFabricantes(fabricanteList); 
DaoEquip.incluirEquip(equip);

Espero q tenha ajudado …

Abração !

muito obrigado pela ajuda.
mas agora esta apresentanto o seguinte erro:

object references an unsaved transient instance - save the transient instance before flushing: modelo.Fabricante"

magricelinho,

Isso acontece pq o Hibernate ainda não esta gerenciando o objeto fabr.

tem duas opcões :

  1. Na sua classe Equipe:

alterar essa linha :

@ManyToMany(fetch = FetchType.LAZY)

por

@ManyToMany(fetch = FetchType.LAZY, cascade=CascadeType.ALL)

Isso vai fazer com q o Hibernate se preocupe com o objeto da classe Fabricante sempre que o objeto da classe Equip se tornar persistente.

Uma outra maneira é fazer esse processo manual.

Equip equip = new Equip();	
Fabricante fabr = new Fabricante(); 

//Salvar o objeto fabricante antes de salvar o objeto equip
DaoFabricante.incluirFabr(fabr);

fabr.setNome(request.getParameter("cboFabricante")); 
equip.setFabricantes((List<Fabricante> fabr); 
DaoEquip.incluirEquip(equip);

Bom ve se resolve seu problema aee !!

Lembrando q vc deve usar uma ou outra maneira (vc decide ai qual usar)

Abracaoo !!

Magnocosta deu certo!
Muito Obrigado