[
https://issues.apache.org/jira/browse/OPENJPA-1352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Fay Wang updated OPENJPA-1352:
------------------------------
Attachment: OPENJPA-1352.patch
Although Arrays.asList returns a List object, its class is Arrays.ArrayList.
This is a static private inner class and can only be constructed from within
Arrays. During merge/persist, openjpa needs to construct a proxyCollection by
instantiating a new List object based on the class type of the original
collection. This attempt fails because Arrays.ArrayList can not be
loaded/constructed from outside Arrays.
The attached patch is to return null value if the class can not be loaded
instead of throwing the exception. A test case will be attached later.
> Merge fails if an entity has an element collection which is contructed using
> Arrays.asList
> ------------------------------------------------------------------------------------------
>
> Key: OPENJPA-1352
> URL: https://issues.apache.org/jira/browse/OPENJPA-1352
> Project: OpenJPA
> Issue Type: Bug
> Components: kernel
> Reporter: Fay Wang
> Assignee: Fay Wang
> Attachments: OPENJPA-1352.patch
>
>
> When an entity has an element collection, which is constructed using
> Arrays.asList, the following exception is thrown:
> java.lang.IllegalAccessError:java.util.Arrays$ArrayList
> at java.lang.ClassLoader.defineClassImpl(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:265)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:202)
> at serp.bytecode.BCClassLoader.findClass(BCClassLoader.java:50)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:643)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
> at java.lang.Class.forNameImpl(Native Method)
> at java.lang.Class.forName(Class.java:169)
> at
> org.apache.openjpa.util.GeneratedClasses.loadBCClass(GeneratedClasses.java:67)
> at
> org.apache.openjpa.util.ProxyManagerImpl.getFactoryProxyCollection(ProxyManagerImpl.java:363)
> at
> org.apache.openjpa.util.ProxyManagerImpl.copyCollection(ProxyManagerImpl.java:182)
> at
> org.apache.openjpa.kernel.AttachStrategy.copyCollection(AttachStrategy.java:344)
> at
> org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:321)
> at
> org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:218)
> at
> org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:153)
> at
> org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:251)
> at
> org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:202)
> at
> org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:153)
> at
> org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:251)
> at
> org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:104)
> at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3322)
> at
> org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1176)
> at
> org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.java:858)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.