@WebServlet("/criatabelas")publicclassCriaTabelasextendsHttpServlet{/** * */privatestaticfinallongserialVersionUID=1L;publicstaticvoidmain(String[]args){EntityManagerFactoryemf=Persistence.createEntityManagerFactory("HXBR");EntityManagerem=emf.createEntityManager();Empresaempresa=newEmpresa();Funcionarioresponsavel=newFuncionario();empresa.setNomeFantasia("Heli");empresa.setRazaoSocial("do Brasil");empresa.setCNPJ("20.387.3330001-81");empresa.setWebsite("www.emb.com.br");//empresa.setFundacao();responsavel.setEmail("[email removido]");responsavel.setCargo("Analista");responsavel.setCelular("9988-0813");responsavel.setDepartamento("Indústrias para Mobilidade");responsavel.setEmpresa(empresa);responsavel.setNome("Leonardo");responsavel.setTelefone("9988-0813");empresa.setResponsavel(responsavel);em.getTransaction().begin();em.persist(empresa);em.persist(responsavel);em.getTransaction().commit();System.out.println("Empresa salva com sucesso!");}}
Não sei como resolver, mas acho que o problema está em:
empresa.setResponsavel(responsavel);
Porque sempre que eu apago ele, o código roda direito e é gravado no banco.
E
esmiralha
O erro quer dizer que você está tentando converter um objeto do tipo Funcionario em um objeto do tipo Collection. Eu imagino que um Funcionario não seja um Collection (ou seja que não implemente essa interface que serve para implementar listas de objetos).
C
CLTD
Mas é uma relação OnetoMany. Não deveria ser uma coleção Funcionário?
Teu erro está no código acima… Antes de aprender JPA você precisa aprender o que é um tipo de dados e como funciona a coerção de tipos (type casting) no Java.
No método get você faz a coerção da variável Responsavel para Funcionario e no método set faz a coerção do argumento do tipo Funcionario para Collection de Funcionario. Não rola!! Não dá para enganar a JVM e dizer que Banana é Laranja. Ele vai te xingar…
C
CLTD
@esmiralha você está correto. Eu não tenho conhecimento de como funciona a coerção de tipos; mas, como eu não sou da área de programação, eu estou aprendendo Java já na ação, a partir de erros concretos.
Como você sugere que esse erro pode contornado?
I
igomes1 like
Vc pode ter uma lista de funcionários sim, mas quando vc adicionar o responsável no método vc adiciona ele na lista e não faz um cast para que ele seja uma lista
C
CLTD
@igomes Obrigado, Igor. Chegando em casa, farei o teste.
Como ficaria a linha de código para adicioná-lo na lista?