• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: best practices when deleting
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: best practices when deleting


  • Subject: Re: best practices when deleting
  • From: WebObjects <email@hidden>
  • Date: Tue, 11 Apr 2006 14:16:32 -0700
  • Thread-topic: best practices when deleting

Title: Re: best practices when deleting
Chuck (and many regarded others),

First, the error:

[2006-04-11 13:57:20 PDT] <WorkerThread0> com.webobjects.eoaccess.EOGeneralAdaptorException: deleteRowDescribedByQualifierEntity -- com.webobjects.jdbcadaptor.JDBCChannel: method failed to delete row in database
    at com.webobjects.eoaccess.EODatabaseContext._exceptionWithDatabaseContextInformationAdded(EODatabaseContext.java:4676)
    at com.webobjects.eoaccess.EODatabaseContext.performChanges(EODatabaseContext.java:6384)
    at com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(EOObjectStoreCoordinator.java:415)
    at com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3165)
    at BackDoor.removeNewDonor(BackDoor.java:48)

My code isn’t complex, in fact it all happens in a test component that simply does the following:

#1 – call a method to create and insert a new ‘donor’ into my database:

   
public WOComponent makeNewDonor()
    {

        EOEditingContext ec2 = this.session().defaultEditingContext();

        TblDonor newDonor = new TblDonor();

        newDonor.setStrMiddleName("MNameFake");
        newDonor.setStrStateOfBirth("Penna.");
        newDonor.setStrLastName("LNameFake");
        newDonor.setIntGender(new Integer(11));
        newDonor.setStrFirstName("FNameFake");
        newDonor.setStrSsn("200785252");
        newDonor.setStrZip("99999");
        newDonor.setStrMemo("this is memo text");
        newDonor.setStrAddr2("addr2 fake");
        newDonor.setStrAddr1("addr1 fake");
        newDonor.setStrState("TN");
        newDonor.setStrCity("Memphis");
        newDonor.setIntMaritalStatus(new Integer(12));

        TblDonorPhone tdp = new TblDonorPhone();
        tdp.setStrPhoneDescription("myPhnDescription");
        tdp.setStrPhoneNumber("555-1212");
        tdp.setTblDonorPhoneId(new Integer(2));
        
        ec2.insertObject(newDonor);
        
        newDonor.addToTblDonorPhones(tdp); //adds one "phone" entry to donor
       
        TblDonorPhone tdp2 = new TblDonorPhone();
        tdp2.setStrPhoneDescription("myPhnDescription2");
        tdp2.setStrPhoneNumber("555-1213");
        tdp2.setTblDonorPhoneId(new Integer(3));
        
        newDonor.addToTblDonorPhones(tdp2); //add another "phone" to same donor record
       
        
        ec2.saveChanges();

        return null;
    }


#2 – immediately then I call this method to test the delete (mostly to test the cascading deletion):

   
public void removeNewDonor() {
     
        EOEditingContext ec = this.session().defaultEditingContext();

        //ec.refreshAllObjects();

        aDonor = (TblDonor)EOUtilities.objectMatchingKeyAndValue(ec, "TblDonor", "strSsn", "200785252");

        ec.deleteObject(aDonor);
        ec.saveChanges();

    
    }

So, upon firing the removeNewDonor() method I get the “_exceptionWithDatabaseContextInformationAdded(EODatabaseContext.java:4676)” error.  But, when I un-comment the “ec.refreshAllObjects();” call I get consistent good results.

I’m only prototyping my code here – as you can see it’s not elegant and lots of exception handling needs to be added – but for testing I want to let the exceptions jump right out.

I DO have Chuck’s book, but must admit it’s a bit over my head since I still don’t have my black-belt in Java.  
http://www.global-village.net/wointro will be my next investment. :)

Thanks in advance for pointing out all my elementary flaws,

-Bill


   


on 4/11/06 11:50, Chuck Hill at email@hidden wrote:

> Hi Bill,
>
> On Apr 11, 2006, at 11:19 AM, WebObjects wrote:
>>
>> I’m getting ‘safe’ results when using “ec.refreshAllObjects();”  
>> prior to
>> selecting and deleting objects from my database/entities.  Without  
>> it I get
>> all sorts of problems with context(s) not being in sync.
>>
> I have no idea what sort of problems you are getting.  Can you  
> elaborate?  Stack traces can help.
>
>> Is there another or additional safe practice that I should be  
>> observing, to
>> ensure newly added or updated records are free for deletion?
>
> I don't recall ever needing to do something special.  I'll guess that  
> you are doing something wrong.  Some code examples might help us  
> determine what that is.
>
> Chuck
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: best practices when deleting
      • From: Chuck Hill <email@hidden>
    • Re: best practices when deleting
      • From: Robert Walker <email@hidden>
    • Re: best practices when deleting
      • From: Ken Anderson <email@hidden>
References: 
 >Re: best practices when deleting (From: Chuck Hill <email@hidden>)

  • Prev by Date: Re: Help with Qualifier and NSKeyValueCoding.NullValue
  • Next by Date: Re: best practices when deleting
  • Previous by thread: Re: best practices when deleting
  • Next by thread: Re: best practices when deleting
  • Index(es):
    • Date
    • Thread