EJB3: Persistir dados relacionamento many-to-many

2 respostas
I

Boa tarde,

Pessoal, estou conhçendo o EJB e estou tentando gravar os dados em uma pequena aplicação que fiz para aprender. O problema esta no relacionamento many-to-many.
Criei as entitys:

TipoCadastro

@ManyToMany(fetch=FetchType.EAGER) @JoinTable(name="TELA_ITENS", joinColumns={@JoinColumn(name="TLI_TIP_ID")}, inverseJoinColumns={@JoinColumn(name="TLI_ETQ_ID")}) private List<Etiquetas> etiquetasList;

Etiquetas

@ManyToMany(fetch=FetchType.EAGER) @JoinTable(name="TELA_ITENS", joinColumns={@JoinColumn(name="TLI_TIP_ID")}, inverseJoinColumns={@JoinColumn(name="TLI_ETQ_ID")}) private List<TipoCadastros> tipoCadastroList;

Quando preencho o objeto (a lista do n para n preenchida) ele retorna o erro:

Dizendo que não foi possivel inserir por que a chave criada anteriormente não existe.

Enfim, quando mando persistir a lista de Etiquetas que esta na entity TelaCadastro esta preenchida, portanto, a ação normal seria cadastrar o TipoCadastro e então a lista de etiquetas. O erro é que ele não encontra o TipoCadastro que foi salvo e olhando o valor do sequence no bando de dados confere com o valor que esta apresentado no StakeTrace.
Alguem tem alguma sugestão de onde esta o erro. O que eu estou fazendo de errado!

Agradeço a atenção!

2 Respostas

Alexandre_Saudate

Seu mapeamento está errado. Se você quer um relacionamento bidirecional entre as duas classes, deve colocar em alguma das duas anotações @ManyToMany o atributo mappedBy=“nome do atributo na outra entidade” e retirar todos os outros atributos.

Por exemplo, fazendo isso em TipoCadastro, ficaria assim:

@ManyToMany(mappedBy="tipoCadastroList")     
private List<Etiquetas> etiquetasList;

[]´s

I

asaudate,

Obrigado pela resposta!

Fiz a modificação como sugerido, mas continua o mesmo problema!!

Abs

Criado 24 de maio de 2010
Ultima resposta 24 de mai. de 2010
Respostas 2
Participantes 2