Estava montando um relacionamento ManyToMany e reparei que o hibernate4.2.3 gera uma terceira tabela, até ai sem surpresas, mas dependendo do colection que eu uso ele gera esta tabela com chaves primarias ou secundárias, por exemplo
Se eu usar Set, ele gera uma terceira tabela que terá duas colunas “id_usuario” e “id_disciplina” como chaves primárias
public class Disciplina{
...
@ManyToMany(mappedBy="disciplinas_participa")
private Set<Usuario> usuario;
...
}
public class Usuario{
...
@ManyToMany
@JoinTable(name = "participa",
joinColumns = @JoinColumn(name = "id_usuario"),
inverseJoinColumns = @JoinColumn(name = "id_disciplina"))
private Set<Disciplina> disciplinas_participa;
}
....
Todavia se eu usar List, ele criará a tabela participa, entretanto as colunas “id_usuario” e “id_disciplina” serão chaves estrangeiras.
public class Disciplina{
...
@ManyToMany(mappedBy="disciplinas_participa")
private List<Usuario> usuario;
...
}
public class Usuario{
...
@ManyToMany
@JoinTable(name = "participa",
joinColumns = @JoinColumn(name = "id_usuario"),
inverseJoinColumns = @JoinColumn(name = "id_disciplina"))
private List<Disciplina> disciplinas_participa;
}
....
Achei isso estranho, é um comportamente normal? Quais as preferências de vcs perante a esse comportamento? É possível ter um List e ser representado como chave primária?
[]s