[jboss-user] [EJB 3.0] - Re: Cannot remove entites used in relationships
bathulap
do-not-reply at jboss.com
Sun Sep 9 16:21:08 EDT 2007
Problem :
Relation between ManualCheck & ManualCheckDistribution is one to many, ManualCheckDistribution to ManualCheckDistributionDetail is one to many.
When I tried to invoke delete Child), hibernate is throwing below exception. Though we are trying to delete entity, error message talks about persisting an entity.
javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.adp.payroll.model.payroll.manualcheck.ManualCheckDistribution#]
Guess hibernate will invoke persist of Parent entity after removing child entity to synchronize its state with database.
Parent entity Set/Collection of child entities has still a reference to Child entity which was deleted, because we have not refreshed Set/Collection of child entities in Parent entity.
When Hibernate calls persist on Parent to synchronize we get the above exception.
Soution : Before you invoke delete(Child), remove the child entity refernce from the Set/Collection of child entities in Parent entity
Code snippet:
public void deleteManualCheckDistribution(PayrollAgreementId payrollAgreementId, String payNumber, int distNumber )throws PayrollServiceException {
ManualCheckDistribution checkDist = getManualCheckDistribution(payrollAgreementId, payNumber, distNumber);
ManualCheck mc = checkDist.getManualCheck();
Set distList = mc.getManualCheckDistributions();
distList.remove(checkDist);
getEm().remove(checkDist);
}
Thanks,
Bathula.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4082414#4082414
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4082414
More information about the jboss-user
mailing list