openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Heath Thomann (JIRA)" <>
Subject [jira] Updated: (OPENJPA-1424) Out of bounds exception using fetch plan
Date Thu, 12 Aug 2010 04:09:15 GMT


Heath Thomann updated OPENJPA-1424:

    Attachment: OPENJPA-1424-1.2.x.patch.txt

I'm attaching a patch (OPENJPA-1424-1.2.x.patch.txt) for 1.2.x.  This patch contains:
1) A back port of ClassMedaData from the trunk version of the fix.  This is the only change
from trunk which I back ported.....the other change doesn't easily port and the initial test
case passes with the ClassMetaData changes.
2) A stripped down version of the initial test case provided by Daryl.  I think I've stripped
down the test as far as I can (any further and I couldn't reproduce the issue).  



> Out of bounds exception using fetch plan
> ----------------------------------------
>                 Key: OPENJPA-1424
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.2.1
>         Environment: Mac OSX, Java 1.5, Tomcat 5, PostgreSQL 8.4
>            Reporter: Daryl Stultz
>             Fix For: 2.0.1
>         Attachments: OPENJPA-1424-1.2.x.patch.txt,
> Hello, I'm getting the following:
> java.lang.ArrayIndexOutOfBoundsException: 2
> at org.apache.openjpa.meta.ClassMetaData.getExtraFieldDataIndex(
> at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(
> at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(
> at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(
> at org.apache.openjpa.kernel.ROPStoreManager.initialize(
> at org.apache.openjpa.kernel.BrokerImpl.initialize(
> at org.apache.openjpa.kernel.BrokerImpl.find(
> at org.apache.openjpa.kernel.BrokerImpl.find(
> at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(
> at org.apache.openjpa.jdbc.sql.AbstractResult.load(
> at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(
> at org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(
> at org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin( 
> I've attached a unit test that exposes it. I've done my best to pare things down but
it seems anything else I remove makes it go away (there are several things that could be removed
to make it go away). The unit test passes when the exception is thrown. 
> In short, this works:
> Query query = em.createQuery("select o from Case as o" +
>     " left join fetch o.scheduledAssignments" +
>     " where o.scheduleDay = :sd");
> query.setParameter("sd", sd);
> List<Case> allCases = query.getResultList();
> But this doesn't:
> Query query = em.createQuery("select o from Case as o" +
>     " where o.scheduleDay = :sd");
> query.setParameter("sd", sd);
> FetchPlan fetchPlan = ((QueryImpl) query).getFetchPlan();
> fetchPlan.addField(Case.class, "scheduledAssignments");
> List<Case> allCases = query.getResultList();
> The test case runs against PostgreSQL. I would really appreciate it if someone could
verify the test passes under some other database or if it fails, under PostgreSQL. Of course
it would be even better if an OpenJPA expert could find the problem.
> I will also accept suggestions for building a better unit test package.
> Thanks for your help.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message