hibernate - Before deleting an entity, deleting its parent reference(s), if any -
it essential delete entity parent list , parent entity before entity deleted.
example (cmt in ejb) one-to-many state city :
public boolean delete(city city) { // detached instance. city managedcity = entitymanager.contains(city) ? city : entitymanager.merge(city); managedcity.getstate().getcitylist().remove(managedcity); managedcity.setstate(null); entitymanager.remove(managedcity); return true; } the statement managedcity.setstate(null); sets entity's parent null. since managed entity, changes made entity hit underlying database. accordingly, update statement generated , state_id in database table set null.
update db.city set state_id = ?, row_version = ? ((city_id = ?) , (row_version = ?)) bind => [null, 2, 10, 1] this quite undesired. in addition issuing addition update statement, attempts set state_id in database table null cause problems, if not null database constraint enforced against corresponding column in database table.
how correctly remove entity's parent before deleting entity or not required delete (setting null) parent before deleting entity (it cause problems in cases. answer should therefore be, no)?
in case have not null constraint , bidirectional association better propagate change parent side:
public boolean delete(city city) { // detached instance. city managedcity = entitymanager.contains(city) ? city : entitymanager.merge(city); managedcity.getstate().getcitylist().remove(managedcity); return true; } and make sure cascade remove operation parent child:
@onetomany(cascade = cascadetype.remove) setting parent association null works when have null fk.
Comments
Post a Comment