Is this a bug or am I doing something wrong? .....

I am fetching instances of entity CTProduct qualified as follows:

public NSArray productsWithPendingMessages( EOEditingContext ec ) { EOQualifier qualifier = new EOKeyValueQualifier( "mediaTemplates.messages.workflowState", EOQualifier.QualifierOperatorEqual, CTMessage.WORKFLOW_STATE_READY_TO_BE_SENT ); EOFetchSpecification fs = new EOFetchSpecification( "CTProduct", qualifier,
                                                                null,
                                                                true,
                                                                false,
                                                                null );
NSArray foundProducts = ec.objectsWithFetchSpecification( fs ); if ( log.isDebugEnabled() ) log.debug("foundProducts count = " + foundProducts.count() );
            return foundProducts;
        }

Relationships
CTProduct <-->> CTMediaTemplate <-->> CTMessage

workflowState is just a text field

CTMessage is an abstract class and subclasses are using horizontal table mapping for inheritance via separate tables. Therefore CTMessage does not have a table in the EOModel definition, so the SQL incorrectly generates a null for the table name. Is it a case of this being too complex for EOF?

Incidentally CTMediaTemplate is also abstract, but I use single table mapping for its subclasses.

The relevant error is:
com.webobjects.jdbcadaptor.JDBCAdaptorException: EvaluateExpression failed: <com.webobjects.jdbcadaptor.MySQLPlugIn$MySQLExpression: "SELECT DISTINCT t0.defaultprice, t0.descriptor, t0.itemid, t0.longdescriptor, t0.oid, t0.oidimage, t0.oidmailingrate, t0.oidoutputmedia, t0.printingcost, t0.recaddtime, t0.recadduser, t0.recmodtime, t0.recmoduser, t0.technotes FROM product t0, null T2, mediatemplate T1 WHERE T2.workflowstate = ? AND T1.oid = T2.oidmediatemplate AND t0.oid = T1.oidproduct" withBindings: 1:"rtbs"(workflowState)>: Next exception:SQL State:42000 -- error code: 1064 -- msg: Syntax error or access violation message from server: "You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'null T2, mediatemplate [2006-02-09 11:17:48 EST]

Should I just accept that horizontal inheritance table mapping will kill this kind of a sql generation for a qualifier ...... or just switch to single table mapping which I guess will solve the problem?

_______________________________________________
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