From dev-return-8657-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Wed Jul 16 13:18:23 2008 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 26908 invoked from network); 16 Jul 2008 13:18:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 16 Jul 2008 13:18:23 -0000 Received: (qmail 77003 invoked by uid 500); 16 Jul 2008 13:18:22 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 76889 invoked by uid 500); 16 Jul 2008 13:18:22 -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 76873 invoked by uid 99); 16 Jul 2008 13:18:22 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Jul 2008 06:18:22 -0700 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; Wed, 16 Jul 2008 13:17:37 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id D4DCD234C15F for ; Wed, 16 Jul 2008 06:17:31 -0700 (PDT) Message-ID: <820539020.1216214251857.JavaMail.jira@brutus> Date: Wed, 16 Jul 2008 06:17:31 -0700 (PDT) From: "gioni (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Commented: (OPENJPA-560) merge() throws NPE or unable to create proxy In-Reply-To: <858239348.1207669284797.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/OPENJPA-560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12613949#action_12613949 ] gioni commented on OPENJPA-560: ------------------------------- I have encountered the some error with OpenJPA version 1.1.0, when i try to merge a detached entity. Environment: Swing app, openJPA 1.1.0, jdk1.6.0_06, Firebird 2.1, Windows 2000. With OpenJPA version 1.0.2 and TopLink works fine. ----------- Exception in thread "AWT-EventQueue-0" java.lang.Error: java.lang.reflect.InvocationTargetException at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859) at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665) at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Caused by: java.lang.reflect.InvocationTargetException 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.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662) ... 27 more Caused by: org.apache.openjpa.persistence.PersistenceException: null at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3213) at org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1158) at org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.java:769) at ro.mig.InvoiceView.saveInvoice(InvoiceView.java:597) at ro.mig.InvoiceView.save(InvoiceView.java:621) ... 32 more Caused by: java.lang.NullPointerException at org.apache.openjpa.kernel.StateManagerImpl.replaceObjectField(StateManagerImpl.java:2056) at org.apache.openjpa.enhance.ro$mig$entity$InvoiceHeader$pcsubclass.pcReplaceField(Unknown Source) at org.apache.openjpa.kernel.StateManagerImpl.replaceField(StateManagerImpl.java:3015) at org.apache.openjpa.kernel.StateManagerImpl.storeObjectField(StateManagerImpl.java:2453) at org.apache.openjpa.kernel.StateManagerImpl.storeObject(StateManagerImpl.java:2443) at org.apache.openjpa.jdbc.meta.strats.StoreCollectionFieldStrategy.load(StoreCollectionFieldStrategy.java:493) at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:802) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:520) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:116) at org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78) at org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:2911) at org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:2989) at org.apache.openjpa.kernel.StateManagerImpl.fetchObjectField(StateManagerImpl.java:2238) at org.apache.openjpa.kernel.StateManagerImpl.fetchField(StateManagerImpl.java:775) at org.apache.openjpa.kernel.StateManagerImpl.fetch(StateManagerImpl.java:737) at org.apache.openjpa.enhance.RedefinitionHelper$1.invoke(RedefinitionHelper.java:230) at $Proxy14.isEmpty(Unknown Source) at org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:213) at org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:161) 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:3206) ... 36 more ----------- > 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. > 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.