Pergunta
Eu tenho 2 tabelas:
A
s_id(key) name cli type
B
sa_id(key) s_id user pwd
Então, em JPA, eu tenho:
@Entity
class A...{
@OneToMany(fetch=FetchType.EAGER)
@JoinTable( name="A_B",
joinColumns={@JoinColumn(name="a_id", table="a",unique=false)},
inverseJoinColumns={@JoinColumn(name="b_id", table="b", unique=true)} )
Collection<B> getB(){...}
}
A classe B é apenas uma classe de entidade básica, sem referência a A.
Espero que isso esteja claro. Minha pergunta é: eu realmente preciso de uma tabela de junção para fazer uma junção tão simples? Isso não pode ser feito com um simples juncolumn ou algo assim?
Solução
Você não precisa de um articável para isso. Se a classe B não tiver referência à classe A, o seguinte será suficiente
@Entity class A...{
@OneToMany(fetch=FetchType.EAGER)
Collection getB(){...} }
Na maioria dos casos, você pode querer um relacionamento bidirecional, caso em B tem uma referência a A. Nesse caso, você precisará procurar a anotação @Mappy. mencionado por Paul.
Outras dicas
Não, você não precisa de uma mesa de junção para Onetomany. Olhe para a anotação @mappby
A resposta rápida é que, se você tiver um relacionamento muitos para muitos, precisará de outra tabela. Se você tem um relacionamento um para muitos ou muitos para um, não terá.