[
https://issues.apache.org/jira/browse/OPENJPA-560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12613966#action_12613966
]
Michael Dick commented on OPENJPA-560:
--------------------------------------
This is probably a result of the changes made for OPENJPA-245. In the mean time
enhancing the entities will resolve (or at least avoid) the problem.
> merge() throws NPE or unable to create proxy
> --------------------------------------------
>
> Key: OPENJPA-560
> URL: https://issues.apache.org/jira/browse/OPENJPA-560
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 1.1.0
> Environment: Linux 2.6, Java 1.5.0_12, Derby 10.3.2.1
> Reporter: Adam Hardy
> Attachments: bug-jpa-merge.zip
>
>
> I have reduced this to a stand-alone unit test and also tested it against
> Toplink and Hibernate, with which it works.
> So I'm looking at a pure OpenJPA issue here.
> Here is the low-down:
> - Parent - child entities mapped using XML as opposed to annotations
> - both inherit a mapped superclass
> - both have a prepersist and preupdate listener configured
> - not using enhancement
> This is all I do:
> EntityManager entityManager =
> db.entityManagerFactory.createEntityManager();
> entityManager.getTransaction().begin();
> Genus genus = entityManager.find(Genus.class, new Long(1));
> entityManager.getTransaction().commit();
> entityManager.close();
> // now detached
> entityManager = db.entityManagerFactory.createEntityManager();
> entityManager.getTransaction().begin();
> entityManager.merge(genus);
> and it throws an exception. If there is a child row in the db, I get the
> exception below.
> If there is no child in existence, I get a NullPointerException.
> If I enhance the entities, all is hunkydory.
> This is using OpenJPA v1.1.0 snapshot from February.
> $Proxy13 seems to be the name of the parent's child collection property, I
> can see from debugging.
> <openjpa-1.1.0-SNAPSHOT-r420667:609825 fatal general error>
> org.apache.openjpa.persistence.PersistenceException: Unable to create a
> second class object proxy for final class "class $Proxy13".
> at
> org.apache.openjpa.util.ProxyManagerImpl.assertNotFinal(ProxyManagerImpl.java:555)
> at
> org.apache.openjpa.util.ProxyManagerImpl.generateProxyCollectionBytecode(ProxyManagerImpl.java:524)
> at
> org.apache.openjpa.util.ProxyManagerImpl.getFactoryProxyCollection(ProxyManagerImpl.java:373)
> at
> org.apache.openjpa.util.ProxyManagerImpl.copyCollection(ProxyManagerImpl.java:192)
> at
> org.apache.openjpa.kernel.AttachStrategy.copyCollection(AttachStrategy.java:342)
> at
> org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:319)
> at
> org.apache.openjpa.kernel.AttachStrategy.replaceList(AttachStrategy.java:357)
> at
> org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:222)
> at
> org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:151)
> at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:241)
> at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:101)
> at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3196)
> at
> org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1142)
> at
> org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.java:736)
> at
> org.permacode.atomictest.jpa.JpaSpeciesDao.persist(JpaSpeciesDao.java:81)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.