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 Mon, 02 Apr 2007 22:00:50 GMT
Dain-

On Apr 2, 2007, at 12:23 PM, Dain Sundstrom wrote:

> Is this something we can put in 0.9.7 or has that been cut already?

I've gone ahead and committed the fix for this.



> -dain
>
> On Apr 1, 2007, at 10:07 PM, Craig L Russell wrote:
>
>> +1 to remove the restriction. As long as no parameters are  
>> missing, the query should be considered sufficient.
>>
>> Craig
>>
>> On Apr 1, 2007, at 9:30 AM, Marc Prud'hommeaux wrote:
>>
>>>
>>> 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
>>>>
>>>
>>
>> Craig Russell
>> Architect, Sun Java Enterprise System http://java.sun.com/products/ 
>> jdo
>> 408 276-5638 mailto:Craig.Russell@sun.com
>> P.S. A good JDO? O, Gasp!
>>
>


Mime
View raw message