• 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
Attempt to generate SQL failed
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Attempt to generate SQL failed


  • Subject: Attempt to generate SQL failed
  • From: Ian Joyner <email@hidden>
  • Date: Wed, 14 Sep 2005 17:19:29 +1000

I have just managed to break some code which has been working for some time. I have narrowed it down to a line on the server side as follows:

    public void awakeFromClientUpdate (EOEditingContext ec) {
        super.awakeFromClientUpdate (ec);
//        setModification_date (new NSTimestamp ());
    }

The commented out line causes the failure, and what has happened is that I have added a set of 'test' (not programming tests) entities which get attached to an Asset entity. So Asset sees its Test_results from a one-to-many relationship:

test_results: Asset (primary_key) --> Test_result (asset_key) 

Now Test_result is abstract and has subclasses Graded_result and Value_result. I add a set of these, setting their asset_key (in class Test_result) as follows:                      

    public void initialize (Skills_test its_test, Asset for_asset, Test_result parent_result) {
        setTest (its_test);
        setAsset (for_asset);
        addObjectToBothSidesOfRelationshipWithKey (for_asset, "asset");
        for_asset.addObjectToBothSidesOfRelationshipWithKey (this, "test_results");
        setParent_test (parent_result);
        setDate (new NSTimestamp ());
    }

I should only need one addObjectToBothSidesOfRelationshipWithKey, but I tried both combinations just to make sure.

When I do an editingContext.saveChanges (), all of the Graded_results are stored fine, but the last thing it tries to do is to update the modification date on Asset, but at this point I get:

[2005-09-14 16:43:39 EST] <WorkerThread11>  evaluateExpression: <com.webobjects.jdbcadaptor.OpenBasePlugIn$OpenBaseExpression: "INSERT INTO GRADED_TEST_RESULT(ASSET_KEY, NOTES, GRADE_KEY, PRIMARY_KEY, PARENT_TEST_KEY, TEST_KEY, DATE) VALUES (?, NULL, ?, ?, ?, ?, ?)" withBindings: 1:5(asset_key), 2:5(grade_key), 3:129(primary_key), 4:133(parent_test_key), 5:19(test_key), 6:2005-09-14 16:43:17(date)>
[2005-09-14 16:43:39 EST] <WorkerThread11>  === Rollback Internal Transaction
[2005-09-14 16:43:39 EST] <WorkerThread11> Server exception: sqlStringForKeyValueQualifier: attempt to generate SQL for com.webobjects.eocontrol.EOKeyValueQualifier (NeededByEOF0 = 5) failed because attribute identified by key 'NeededByEOF0' was not reachable from from entity 'Asset'
[2005-09-14 16:43:39 EST] <WorkerThread11> com.webobjects.eoaccess.EOGeneralAdaptorException: sqlStringForKeyValueQualifier: attempt to generate SQL for com.webobjects.eocontrol.EOKeyValueQualifier (NeededByEOF0 = 5) failed because attribute identified by key 'NeededByEOF0' was not reachable from from entity 'Asset'
    at com.webobjects.eoaccess.EODatabaseContext._exceptionWithDatabaseContextInformationAdded(EODatabaseContext.java:4686)
    at com.webobjects.eoaccess.EODatabaseContext.performChanges(EODatabaseContext.java:6394)
    at com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(EOObjectStoreCoordinator.java:415)
    at com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3187)
    at com.webobjects.eodistribution.EODistributionContext$_RemoteMethodReceiver.clientSideRequestSave(EODistributionContext.java:1071)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


Now the NeededByEOF0 = 5 refers to the Asset's primary_key (in fact I manually changed it from 3 to 5 in the database and sure enough the value changed here). I think the relationships are right because problems there usually result in an 'unable to generate SQL' on an _EOFinv.<realtionship path> key, but I have a problem  on NeededByEOF0, so it looks like Asset is having a problem referencing itself.

I know that NeededByEOF0 is an internal thing in EOF, but why is it using it here, instead of PRIMARY_KEY?
I have been through the model with a fine-tooth comb, and everything looks alright, but what could I be missing.
I even removed the 'abstract' from Test_result java class (like last weeks Skills_test problem), but that did not work.
I have seen some problems mentioned in past posts that there could be a bug in EOF with relationships that reference an abstract type with subclasses. Is this still the case and hence my problem?

Any insights most welcome

Thanks
Ian Joyner
Sportstec

 _______________________________________________
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: Attempt to generate SQL failed
      • From: Ian Joyner <email@hidden>
    • Re: Attempt to generate SQL failed
      • From: Ian Joyner <email@hidden>
  • Prev by Date: Re: Apple, any slight update or estimation on WO 5.3.1, Please ??
  • Next by Date: Re: Apple, any slight update or estimation on WO 5.3.1, Please ??
  • Previous by thread: Re: Child Parent Editing Context
  • Next by thread: Re: Attempt to generate SQL failed
  • Index(es):
    • Date
    • Thread