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 :
- 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