Hi, I'm trying to persist a heirarchical data object implemented as an EJB3 entity bean via a stateless session bean. The main object is a Form object, which has a @OneToOne relationship with an object representing each page of the form. Each page has a @OneToOne relationship with an object representing sections of the page. Each section contains only primitive data types.
When I attempt to persist the object using the remote interface for the Session bean, I get 'org.jboss.tm.JBossRollbackException's.. Unable to commit. I set a property in persistence.xml to show SQL statements and it appears as though it's trying to insert the record for the Form before it's populating each of the foreign key constraints. i.e., if I understand the output correctly, it's storing the object from the top down rather than from the bottom up. This violates the referential integrity constraints on the DB server & the insert fails. Client shows: | Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=sholo/18, BranchQual=, localId=18] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.persistence.PersistenceException: org.hibernate.TransientObjectException: gov.nj.dhss.bdr.form.model.page.ChildPageModel) | at org.jboss.aspects.tx.TxPolicy.handleEndTransactionException(TxPolicy.java:198) | at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:180) | at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87) | at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:192) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:225) | at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:104) | at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) | at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828) | at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681) | at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358) | at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:398) | at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239) | Caused by: org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=sholo/18, BranchQual=, localId=18] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.persistence.PersistenceException: org.hibernate.TransientObjectException: gov.nj.dhss.bdr.form.model.page.ChildPageModel) | at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:369) | at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175) | at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87) | at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:192) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:225) | at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:104) | at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) | at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828) | at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681) | at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358) | at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:398) | at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239) | at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:190) | at org.jboss.remoting.Client.invoke(Client.java:525) | at org.jboss.remoting.Client.invoke(Client.java:488) | at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:55) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:55) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:65) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102) | at $Proxy0.saveForm(Unknown Source) | at gov.nj.dhss.bdr.BirthDefectsRegistry$BirthDefectsRegistryController$NextAction.actionPerformed(BirthDefectsRegistry.java:188) | at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) | at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169) | at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) | at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) | at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234) | at java.awt.Component.processMouseEvent(Component.java:5488) | at javax.swing.JComponent.processMouseEvent(JComponent.java:3126) | at java.awt.Component.processEvent(Component.java:5253) | at java.awt.Container.processEvent(Container.java:1966) | at java.awt.Component.dispatchEventImpl(Component.java:3955) | at java.awt.Container.dispatchEventImpl(Container.java:2024) | at java.awt.Component.dispatchEvent(Component.java:3803) | at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) | at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) | at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) | at java.awt.Container.dispatchEventImpl(Container.java:2010) | at java.awt.Window.dispatchEventImpl(Window.java:1774) | at java.awt.Component.dispatchEvent(Component.java:3803) | at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) | at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) | at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) | at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) | at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) | at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) | Caused by: javax.persistence.PersistenceException: org.hibernate.TransientObjectException: gov.nj.dhss.bdr.form.model.page.ChildPageModel | at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:562) | at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:482) | at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1488) | at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1107) | at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:321) | at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175) | at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87) | at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:192) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) | at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:225) | at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:104) | at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) | at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828) | at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681) | at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358) | at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:398) | at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239) | Caused by: org.hibernate.TransientObjectException: gov.nj.dhss.bdr.form.model.page.ChildPageModel | at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216) | at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108) | at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221) | at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476) | at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2900) | at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:474) | at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:197) | at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120) | at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195) | at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) | at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) | at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:988) | at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:337) | at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:473) | ... 25 more | | | Server shows: | | | 15:11:34,142 INFO [STDOUT] Hibernate: insert into Form (child_ID, title, identification_ID, mother_ID, father_ID, guardianAgency_ID | | , guardian_ID) values (?, ?, ?, ?, ?, ?, ?) | | 15:11:34,220 INFO [STDOUT] Form was persisted. | | | | The configuration is as follows: | JBoss 4.0.4.CR2 | MS SQL Server 2005 using JTDS v1.2 driver | Client is a SWING app. | | Any ideas? (sorry for the long exception, btw) | | Thank you, | Scott View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3937999#3937999 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3937999 ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ JBoss-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jboss-user
