I do not set a parent ref to null. All I do is:
Code:
Set userSalesRegions = editedUser.getSalesRegions();
if (userSalesRegions == null) {
userSalesRegions = new HashSet();
}
if (!userSalesRegions.isEmpty()) {
// Revoke the specified regions
for (int i = 0; i < unassignedItems.length; i++) {
String strRevokeRegionId = unassignedItems[i];
int revokeRegionId = Integer.parseInt(strRevokeRegionId);
SalesRegion revokedRegion = lookupManager.getSalesRegion(revokeRegionId);
Iterator iterator = userSalesRegions.iterator();
while (iterator.hasNext()) {
UserSalesRegion priorGrantedRegion = (UserSalesRegion) iterator.next();
if (revokedRegion.getId().equals(priorGrantedRegion.getSalesRegion().getId())) {
log.info("They were equal. Revoking now");
iterator.remove();
}
}
}
}
After this I just pass the editedUser object to the service layer's save, which leads to a hibernate saveOrUpdate(editedUser);
Hibernate will try to set the fk to null instead of doing a delete. I do have a composite primary key on the child object, and other threads have hinted that this will not work due to a hibernate limitation.
Any insight?