[
https://issues.apache.org/jira/browse/OPENJPA-1424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daryl Stultz updated OPENJPA-1424:
----------------------------------
Attachment: test.zip
Unit test. Probably not a well-written one. I'm open to suggestions to improve
it.
I run against PostgreSQL. The file database/create_jpa.sql can be used to build
the database (called from the file database/build.sh).
> Out of bounds exception using fetch plan
> ----------------------------------------
>
> Key: OPENJPA-1424
> URL: https://issues.apache.org/jira/browse/OPENJPA-1424
> 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
> Attachments: test.zip
>
>
> Hello, I'm getting the following:
> java.lang.ArrayIndexOutOfBoundsException: 2
> at
> org.apache.openjpa.meta.ClassMetaData.getExtraFieldDataIndex(ClassMetaData.java:859)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:358)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> at
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
> at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
> at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:982)
> at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278)
> at
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2400)
> at
> org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:541)
> at
> org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:807)--
>
> 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.