- The ownership of the relation is determined by where you place the ‘mappedBy’ attribute to the annotation. The entity you put ‘mappedBy’ is the one which is NOT the owner. There’s no chance for both sides to be owners. If you don’t have a ‘delete user’ use-case you could simply move the ownership to the
Group
entity, as currently the User
is the owner.
- On the other hand, you haven’t been asking about it, but one thing worth to know. The
groups
and users
are not combined with each other. I mean, after deleting User1 instance from Group1.users, the User1.groups collections is not changed automatically (which is quite surprising for me),
- All in all, I would suggest you decide who is the owner. Let say the
User
is the owner. Then when deleting a user the relation user-group will be updated automatically. But when deleting a group you have to take care of deleting the relation yourself like this:
entityManager.remove(group)
for (User user : group.users) {
user.groups.remove(group);
}
...
// then merge() and flush()