To refatorando um sistema e colocando o Hibernate para cuidar da persistência. Me deparei com uma situação que me deixou confuso:
Tenho 2 entidades: Pessoa e Origem
A entidade Origem pode ser cadastrada independente de pessoa ou pode ser vinculada a uma pessoa ( Ex.: entro em uma tela e cadastro a origem ou entro na tela Pessoa seto uma Origem pra ela )
Eu acho que esse relacionamento seria N-N correto? Se eu estiver certo, como ficaria o relacionamento no meu bean Pessoa e no meu bean Origem?
Alguém tem algum exemplo de como resolver essa situação?
Uma origem pode estar em mais de uma pessoa??? E uma pessoa pode ter mais de uma origem???
Se a resposta para as duas perguntas forem sim… então é N:N…caso contrário não…
@ManyToMany( targetEntity = AutorImpl.class )
@JoinTable( name = "Publicacoes_Autores", joinColumns = @JoinColumn( name = "publicacao", referencedColumnName = "id" ), inverseJoinColumns = @JoinColumn( name = "autor", referencedColumnName = "id" ) )
public List<Autor> getAutores()
Para fazer funcionar precisa de 3 tabelas. As duas que se relacionam e a de relacionamento. Nesse caso contendo apenas os ids de referência para cada tabela.
bom…eu to usando o hibernate aqui, mas não to usando o annotations… faço todo o mapeamento via xml… e pra relacionamento de n:n… eu uso a tag composite-id… dá uma pesquisada sobre isso…que certamente deve ter algo parecido para o annotations, senão igual…
Le os dois em… sem eles eu nao ia saber nada… hehe… vai por mim…
Outra coisa, com o Hibernate, tome cuidado com os relacionamentos OneToMany, ManyToMany usando List… no seu caso, acho q nao vai ter problema nao, mas se vc for usar o fetch=FetchType.EAGER, quando vc usa um List, na sua tabela de relacionamento, vai ter q ter uma coluna de Indice, o @IndexColumn.
Se no seu relacionamento, a ordem dos elementos nao importar, e o relacionamento nao puder se repetir usa um Set…