[ https://issues.apache.org/jira/browse/OPENJPA-1424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
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). Thanks, Heath > 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 > Fix For: 2.0.1 > > Attachments: OPENJPA-1424-1.2.x.patch.txt, 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.