From dev-return-11331-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Fri Apr 03 20:15:36 2009 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 81907 invoked from network); 3 Apr 2009 20:15:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 3 Apr 2009 20:15:36 -0000 Received: (qmail 19612 invoked by uid 500); 3 Apr 2009 20:15:36 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 19567 invoked by uid 500); 3 Apr 2009 20:15:36 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 19557 invoked by uid 99); 3 Apr 2009 20:15:36 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Apr 2009 20:15:36 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Apr 2009 20:15:34 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id F05B9234C055 for ; Fri, 3 Apr 2009 13:15:12 -0700 (PDT) Message-ID: <689679200.1238789712983.JavaMail.jira@brutus> Date: Fri, 3 Apr 2009 13:15:12 -0700 (PDT) From: "Ted Leung (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Commented: (OPENJPA-1020) eager fetching of PersistentCollection of a primitive type fails In-Reply-To: <1077477920.1238779212969.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/OPENJPA-1020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12695558#action_12695558 ] Ted Leung commented on OPENJPA-1020: ------------------------------------ It appears that in the JDBC Store Manager it assumes that the item in the collections is an entity or a persist capable object. In the case of PersistentCollections, I don't think that's true as you can store Strings,Enums etc... so I added a check in the loop to make sure it's a persist capable object before trying to cast and assign a reverse mapping. It's entirely possible that the setInverseRelation() should never have been called at all for that collection... but I'm not sure. The patch I submitted just checked each element in the collection at the time of setting the inverse. > eager fetching of PersistentCollection of a primitive type fails > ---------------------------------------------------------------- > > Key: OPENJPA-1020 > URL: https://issues.apache.org/jira/browse/OPENJPA-1020 > Project: OpenJPA > Issue Type: Bug > Components: jdbc > Affects Versions: 1.2.1, 2.0.0 > Environment: Linux deltoid-r61 2.6.27.12-170.2.5.fc10.i686 #1 SMP Wed Jan 21 02:09:37 EST 2009 i686 i686 i386 GNU/Linux > java version "1.6.0_12" > Java(TM) SE Runtime Environment (build 1.6.0_12-b04) > Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode) > Reporter: Ted Leung > Attachments: openjpa_jdbc_patch.zip, openjpa_junit_patch.zip > > > When a PersistentCollection of primitives like String.class are persisted, if the collection is marked as eager fetching. An exception is thrown upon loading the collection : > Attached is a patch file to the 2.0.0 trunk's junit test which illustrates the collection working with lazy and failing with eager. This also happens in 1.2.1 > Exception below: > -------------------- > junit.framework.AssertionFailedError: java.lang.String cannot be cast to org.apache.openjpa.enhance.PersistenceCapable > at junit.framework.Assert.fail(Assert.java:47) > at org.apache.openjpa.persistence.annotations.TestPersistentCollection.testPersistentCollectionStringsEager(TestPersistentCollection.java:169) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at org.apache.openjpa.persistence.test.PersistenceTestCase.runBare(PersistenceTestCase.java:455) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at org.apache.openjpa.persistence.test.PersistenceTestCase.run(PersistenceTestCase.java:182) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213) > at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) > at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) > at org.apache.maven.surefire.Surefire.run(Surefire.java:177) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:334) > at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:980) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.