Thanks Chuck and Ramsey for quick response.

I don't know what was the case. Whether the editingContexts where overlapping 
or not. Before I was using:

a.delete();
editingContext().saveChanges(); // This is the same editing context which was 
used to load "a".

The above was not triggering willDelete() of children.

I changed this with:

editingContext().deleteObject(a);
editingContext().saveChanges();

This triggered willDelete() of children.

I also heard that if an entity has multiple levels of hierarchy then delete 
cascade won't work after second level.

a.toB().toC().toD()

With willDelete() implemented and "editingContext().deleteObject(a)" will 
delete a and a.toB().

If above is true, what is the best practice to complete the delete cascade?

Thanks,

Farrukh

On 2010-07-23, at 11:07 PM, Ramsey Gurley wrote:

> 
> On Jul 23, 2010, at 3:56 PM, Chuck Hill wrote:
> 
>> willDelete() won't be called on the rest until saveChanges()
>> 
>> 
>> On Jul 23, 2010, at 12:51 PM, Farrukh Ijaz wrote:
>> 
>>> Hi,
>>> 
>>> I have a model where an entity A has a recursive relationship as parent 
>>> "toParentOfTypeA()" and children "toChildrenOfTypeA()". Consider it as a 
>>> tree structured entity.
>>> 
>>> In the model have setup the entity to delete cascade.
>>> 
>>> In the entity I have overriden the method willDelete(). Now when I delete 
>>> the parent, it fires the willDelete() of it but does not fire willDelete() 
>>> of it's children. When I checked in the willDelete() I found the 
>>> toChildren() relationship is empty but the children are there and I access 
>>> it in the component when I generate tree.
> 
> 
> I just wanted to add that if you are calling something like setParent instead 
> of addObjectToBothSides that you will only be setting the relationship one 
> way.  So from your children, you will be able to see the toParent, but you 
> will not see any children from the Parent's toChildren.  There's a property 
> to do this automatically in Wonder, but I think you need to be using wonder 
> eogen templates for that property to work.
> 
> If that isn't the case, then you may be crossing editing contexts.
> 
> Ramsey
> 
> 
>>> Below is the source code.
>>> 
>>> Follwing method is overridden inside entity A.
>>> 
>>> public void willDelete() {
>>>  ERXUtilities.deleteObjects(editingContext(), toChildrenOfTypeA());
>>> }
>>> 
>>> // below code is somewhere else.
>>> A a = // object retrieved from the db.
>>> a.delete();
>>> 
>>> Any Idea? If needed, I can send the source code too.
>>> 
>>> Farrukh
>>> 
>>> Sent from my iPad _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>> 
>>> This email sent to [email protected]
>> 
>> -- 
>> Chuck Hill             Senior Consultant / VP Development
>> 
>> Practical WebObjects - for developers who want to increase their overall 
>> knowledge of WebObjects or who are trying to solve specific problems.
>> http://www.global-village.net/products/practical_webobjects
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/ramsey%40xeotech.com
>> 
>> This email sent to [email protected]
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to