Para forçar o Hibernate a criar uma chave primária com ambas as colunas, você deve alterar
Collection
por Set
public class Role {
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(
name = "roles_privileges",
joinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(
name = "privilege_id", referencedColumnName = "id"))
private Set<Privilege> privileges;
}
E:
public class Privilege {
@ManyToMany(mappedBy = "privileges")
private Set<Role> roles;
}