Hello,
How can I define the annotation in the following situation?
class User {
@ManyToMany(fetch = FetchType.EAGER,
targetEntity=Role.class)
@JoinTable(
name="USER_ROLE_LINK",
joinColumns={@JoinColumn(name="username")},
inverseJoinColumns={@JoinColumn(name="rolename")}
)
public Collection<Role> getRoles() {
return roles;
}
}
class Role {
@ManyToMany(
targetEntity=GenericUser.class,
mappedBy="roles",
fetch = FetchType.EAGER)
@JoinTable(
name="USER_ROLE_LINK",
joinColumns={@JoinColumn(name="rolename")},
inverseJoinColumns={@JoinColumn(name="username")}
)
@XmlElement
public Collection<User> getUsers() {
return users;
}
}
The above two classes will create three tables (USER, ROLE, USER_ROLE_LINK) in database.
when I tried to delete the USER, it will delete one record from table USER_ROLE_LINK and USER. It is correct. But when I tried to delete one record from ROLE, it raised some exception: [B]something like cannot delete or update parent entity ...[/B].
How can I define the annotations so that when I want to remove an entity from USER and ROLE, it also can remove all the related records in USER_ROLE_LINK;
for example,
USER
=====
user1
user2
ROLE
====
role1
role2
USER_ROLE_LINK
============
user1 role1
user1 role2
user2 role1
In the above table records, if I want to delete 'user1', it should remove 'user1' from USER and two records from USER_ROLE_LINK that are 'user1'
And if I want to remove 'role1', it will remove 'role1' from ROLE and two records from USER_ROLE_LINK that are 'role1'.