openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ted Leung (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-1020) eager fetching of PersistentCollection of a primitive type fails
Date Fri, 03 Apr 2009 20:15:12 GMT

    [ 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.


Mime
View raw message