openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Dick (JIRA)" <>
Subject [jira] [Commented] (OPENJPA-1992) java.lang.ArrayIndexOutOfBoundsException if positional parameter are not started from 1
Date Fri, 13 May 2011 14:46:47 GMT


Michael Dick commented on OPENJPA-1992:

I'd be fine with opening a new improvement to allow this, and if there is sufficient interest
we'd look into it. Pinaki's point about the prepared SQL cache is particularly concerning
(for me at least). I suspect any changes we make in this area will affect the cache as well.
In the current implementation (and probably in previous releases) this sort of query will
not work as expected (beyond the ArrayIndex exception). 

It's just my personal opinion, but I think it's unlikely that there will be many queries that
use positional parameters and do not already start at one. I suspect most of those are copy
/ paste jobs from JDBC prepared statements which do start at 1. Those that aren't copied or
pasted from existing statements would probably prefer the named parameter support (which is
more friendly anyway). I could be all wet here though - and I can see where it would be a
real pain if you had to go back and update the positional args. 

> java.lang.ArrayIndexOutOfBoundsException if positional parameter are not started from
> ---------------------------------------------------------------------------------------
>                 Key: OPENJPA-1992
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.1.0
>            Reporter: Han Hong Fang
>            Assignee: Michael Dick
>             Fix For: 2.2.0
>         Attachments:, OPENJPA-1992.patch
> Query q = em.createQuery("SELECT x FROM Magazine x WHERE x.title = ?2 and x.price >
> q.setParameter(2, "JDJ").setParameter(3, 25.0);
> When the query is executed, java.lang.ArrayIndexOutOfBoundsException will be thrown.
Since "JDJ" and "25.0" will be stored in arr[0] and arr[1] (when arr.size =2) but the query
execution code tries to get them via arr[2] and arr[3].

This message is automatically generated by JIRA.
For more information on JIRA, see:

View raw message