Re: EOQualifier on a toMany attribute

"Jerry W. Walker" <[email protected]>
Newsgroups gmane.comp.web.webobjects.devel
Message-ID <[email protected]>
Hi, Xavier,

The code should look like this:

================================================
	argsStorage = new NSMutableArray();
	argsStorage.addObject(selectedFormFactor); // this is a toOne
	argsStorage.addObject(selectedFormType); // this is a toOne
	argsStorage.addObject(selectedConnector); // this is the toMany that  
doesn't return any results (NOTE CHANGE HERE)
	qualStorage = EOQualifier.qualifierWithQualifierFormat 
("(productFormFactor = %@) and (productFormType = %@) and  
(productExternalConnectors = %@)", argsStorage);

// followed by something like:

	EOFetchSpecification fetchSpec = new EOFetchSpecification 
("MyEntity", qualStorage, null);
	NSArray results = myEditingContext.objectsWithFetchSpecification 
(fetchSpec);
================================================

My only point earlier was that the second argument to  
qualifierWithQualifierFormat must be an NSArray (with a String as the  
first argument). As an aside, the number of "%@" references in the  
string must match the number of elements in the NSArray, but you seem  
to be doing that.

I would suggest modifying your code to the above and adding the  
runtime parameter:

   -EOAdaptorDebugEnabled Yes

to your application startup. Check the SQL that's generated to  
confirm that it selects the results you're looking for. If it seems  
like it should and you're still not getting the results you expect,  
then I would suspect a problem in the database (e.g. it doesn't have  
the data or structure that you're expecting).

If the generated SQL does NOT conform to your expectations, then I  
would suspect a problem with the EOModel.

Regards,
Jerry


On Feb 14, 2006, at 4:41 AM, Dev WO wrote:
> Hello Jerry,
>> Hi, Xavier,
>>
>> It would help to know how your code is failing, but I don't see  
>> why your code wouldn't work so long as "arg" is an NSArray.
> The code is not failing in fact, it's just there's no result return.
>>
>> If arg is an instance of Connector rather than an NSArray, then  
>> change your qualifier generating statement to the following:
>>
>>     EOQualifer myQualifier =  
>> EOQualifer.qualifierWithQualifierFormat("connectors = %@", new  
>> NSArray(arg));
> Actually I was trying with an instance of connector, I also tried  
> with an NSArray of connector but no luck.
>
> Here's my code:
> 	argsStorage = new NSMutableArray();
> 	argsStorage.addObject(selectedFormFactor); // this is a toOne
> 	argsStorage.addObject(selectedFormType); // this is a toOne
> 	argsStorage.addObject(new NSArray(selectedConnector)); // this is  
> the toMany that doesn't return any results
> 	qualStorage = EOQualifier.qualifierWithQualifierFormat 
> ("(productFormFactor = %@) and (productFormType = %@) and  
> (productExternalConnectors = %@)", argsStorage);
>
> Maybe that's easier to understand than my description;)
>>
>> On Feb 13, 2006, at 6:15 PM, Dev WO wrote:
>>
>>> Hi,
>>> I don't know if I'm doing it wrong or if I'm just misuse  
>>> EOQualifier but:
>>> I have an entity a with a flattened manyToMany relationship named  
>>> connectors on a connector entity.
>>>
>>> I need to qualify a fetch on entity a based on having connector %@
>>> so basically I was doing
>>> EOQualifer.qualifierWithQualifierFormat("connectors = %@", arg);
>>> arg having a connector entity.
>>>
>>> But this doesn't seemed to work...
>>> Am I doing this wrong?

--
__ Jerry W. Walker,
    WebObjects Developer/Instructor for High Performance Industrial  
Strength Internet Enabled Systems

     [email protected]
     203 278-4085        office
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.