JPA relacionamento ManyToMany

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

Creio que isso ocorre porque o Set não permite duplicatas enquanto o List permite.

Pelo que vi se vc mudar somente o lado proprietário da relação para set, a tabela gerada será com chaves primarias e nao com chaves estrangeiras.
Achei este link de um cara falando a respeito. http://www.reverttoconsole.com/blog/hibernate-jpa/generating-a-primary-key-in-manytomany-with-hbm-ddl/

Bom nao sei se mais alguem já passou por isso ou já ficou em duvida como eu.

[]s