Hello!
I am getting a strange message when merging an entity. My entity
contains a set of objects of class A. Each of these objects, in turn,
have an attribute that is a set. My entity gets detached, then a
bunch of As get added and every A contains a set. Most of the As will
contain a singleton but still some may contain a regular set.
The error message is quite clear. OpenJPA can't access the superclass
because the superclass is private static inside java.util.Collections.
java.lang.IllegalAccessError: class
org.apache.openjpa.util.java$util$Collections$SingletonSet$0$proxy
cannot access its superclass java.util.Collections$SingletonSet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
at serp.bytecode.BCClassLoader.findClass(BCClassLoader.java:73)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at
org.apache.openjpa.util.ProxyManagerImpl.loadProxy(ProxyManagerImpl.java:479)
at
org.apache.openjpa.util.ProxyManagerImpl.getFactoryProxyCollection(ProxyManagerImpl.java:365)
at
org.apache.openjpa.util.ProxyManagerImpl.copyCollection(ProxyManagerImpl.java:185)
at
org.apache.openjpa.kernel.AttachStrategy.copyCollection(AttachStrategy.java:341)
at
org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:318)
at
org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:217)
at
org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:134)
at
org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:239)
at
org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:330)
at
org.apache.openjpa.kernel.DetachedStateManager.attach(DetachedStateManager.java:249)
at
org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:239)
at
org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:100)
at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3139)
at
org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1147)
at
org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.java:665)
My question is: should I avoid using singleton set? I guess it is the
same kind of issue as with the EnumSet...
Thanks in advance!
Christian