Olá Pessoal, estou com um problema de mapeamento… Hibernate Many-To-Many.
O cenário é o seguinte.
Eu tenho um cadastro de uma empresa…
A Empresa possui Perfil de Vaga, e uma das caracteristicas do Perfil de Vaga é o tipo de Contatos ( Funcionarios, Clientes e Fornecedores - pode ser 1 ou 3 tipos de contatos. )
EMPRESA 1 ----- * PERFIL DE VAGA * ---- * CONTATOS…
Contatos é uma tabela estática… como Cidade, Estado e Uf…
O relacionamento está até que certo… mas na hora de gravar que estou com problemas…
abaixo a servlet (EmpresaServlet.java)
GenericManager<Empresa, Long> empresaManager = (GenericManager<Empresa, Long>) context
.getBean("empresaManager");
Empresa empresa = new Empresa;
empresa.setNome("Empresa X");
PerfilVaga perfilVaga = new PerfilVaga();
perfilVaga.setTipo("Vaga para Analista");
//perfilVaga.setContatos("?")
// Como pode ser 1 ou mais.. eu tenho que fazer um for..
GenericManager<Contatos, Long> contatosManager = (GenericManager<Contatos, Long>) context
.getBean("contatosManager");
String[] result = (request.getParameterValues("contatoPerfilVaga"));
// For para adicionar uma lista de Long na Lista do Contato.
for (int i = 0; i < result.length; i++) {
Long x = Long.parseLong(result[i]);
Contatos contatos = contatosManager.get(x); // recupero atraves do ID o tipo de contato do banco de Dados.
Collection<Contatos> listaContatos = new ArrayList<Contatos>();
listaContatos.add(contatos);
perfilVaga.setContatos(listaContatos);
}
perfilVaga.setEmpresa(empresa);
empresa.setPerfilVaga(new ArrayList<PerfilVaga>());
empresa.getPerfilVaga().add(perfilVaga);
try {
empresaManager.save(empresa);
} catch (Exception e) {
request.setAttribute("erros", Collections.singletonList("Sistema indisponível"));
e.printStackTrace();
}
Quando faço isso… ex… eu marquei 2 opcoes … Func e Cliente…que sao os tipos de contato que o usuario vai ter.
Este codigo acima esta gravando somente o ultimo… o ID 2 que seria o Cliente…
O que estou fazendo de Errado ??
Muito Obrigado desde ja…