JPA Hibernar em cascata muitos-para-muitos
Estou usando o JPA 2.0 e o hibernate. Eu tenho uma classe de usuário e uma classe de grupo da seguinte maneira:
public class User implements Serializable {
@Id
@Column(name="USER_ID")
private String userId;
@ManyToMany
@JoinTable(name = "USER_GROUP",
joinColumns = {
@JoinColumn(name = "GROUP_ID")
},
inverseJoinColumns = {
@JoinColumn(name = "USER_ID")
}
)
private Set<Group> groupList;
//get set methods
}
public class Group
{
@Id
@Column(name="GROUP_ID")
private String groupId;
@ManyToMany(mappedBy="groupList")
private Set<User> memberList;
//get set methods
}
E então, crio um usuário e um grupo e depois atribuo o usuário ao grupo.
O que eu quero é que quando eu excluir o grupo, o grupo será excluído (é claro) e todo o relacionamento de grupo de usuários que o grupo tiver será excluído automaticamente da tabela de junção USER_GROUP, mas o próprio usuário não será excluído da Tabela USER.
Com o código que tenho acima, somente a linha da tabela GROUP será excluída quando eu excluir um grupo e o usuário ainda terá uma entrada no grupo excluído na tabela de junção USER_GROUP.
Se eu colocar cascata na classe User assim:
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "USER_GROUP",
joinColumns =
{
@JoinColumn(name = "GROUP_ID")
},
inverseJoinColumns =
{
@JoinColumn(name = "USER_ID")
})
private Set<Group> groupList;
Quando eu excluir o grupo, o usuário também será excluído!
Existe alguma maneira de conseguir o que eu quero?