openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Prud'hommeaux <mprud...@apache.org>
Subject Re: [VOTE] ArgumentException : More parameters were passed to execute() than were declared
Date Sun, 01 Apr 2007 16:30:15 GMT

Seem fair enough to get rid of the description. I've opened https:// 
issues.apache.org/jira/browse/OPENJPA-196 describing the issue.

+1 from me to remove the restriction that there be exactly as many  
positional parameters declared as were assigned.



On Mar 31, 2007, at 7:32 PM, Dain Sundstrom wrote:

> Actually, I think there is a bigger problem...  Say I have a query  
> like this:
>
>     SELECT x FROM foo AS x WHERE foo.name = ?2
>
> The org.apache.openjpa.kernel.QueryImpl.assertParameters(...) code  
> assumes that if I have 1 parameter it is numbered ?1, but in EJB  
> 2.1 this was not a requirement and there are certification tests  
> that verify you are allowed to have "unused" parameters (e.g, in my  
> example about ?1 and ?N where N>2 are all not used).  I couldn't  
> find any text in the specification that says that all all  
> positional parameters must be used in the query, but I did find  
> text that say the EJB-QL 3.0 language is an extension of the EJB-QL  
> 2.1 language:
>
> "The Java Persistence query language is an extension of the  
> Enterprise Java Beans query language, EJB QL, definedin[5]."
>
> So I think we must remove the "extra-params" check, but I would be  
> happy with a "don't check for extra-params flag".
>
> -dain
>
> On Mar 31, 2007, at 8:56 AM, Dain Sundstrom wrote:
>
>> I'm working on a CMP 2 implementation that delegates to OpenJPA  
>> for persistence.  I'm running into a problem where I get the  
>> following exception:
>>
>> org.apache.openjpa.persistence.ArgumentException : More parameters  
>> were passed to execute() than were declared: 4 parameters were  
>> specified for query execution, but only 2 parameters were declared  
>> in the query.
>>
>>
>> In CMP you declare finder and select methods that have parameters  
>> which are passed into the query engine.  You can have as many  
>> parameters as you like but are not required to use them all, but  
>> it appears that OpenJPA is enforcing a restriction where if the  
>> EJB-QL text only lists say 2 parameters and I set 4 I get the  
>> above exception.  In order of perference:
>>
>> Is this spec required? If not, can we remove the check?
>>
>> Is there a way to disable the check?  If so, how?
>>
>> Is there a way to determine the number of paramters a query  
>> takes?  If so, I can change my code.
>>
>> Is there a way to get the ejbql text from a Query object? If so,  
>> I'll write a quick parser to determine number of queries myself.
>>
>> BTW, I'm currently using 0.9.6.
>>
>> Thanks,
>>
>> -dain
>


Mime
View raw message