-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: NullPointerException in EntityAction.getId()
PostPosted: Sat Aug 08, 2009 12:36 pm 
Newbie

Joined: Sat Aug 08, 2009 12:00 pm
Posts: 1
Hello,

I'm getting an NPE in EntityAction.getID() in a very specific case.

Basically i have 4 types of Entities (i renamed them to clarify their Relations):
  • TOP: TOP owns a List of UPPERMIDDLE Entities (OneToMany)
  • UPPERMIDDLE: UPPERMIDDLE holds one TOP-Entity (ManyToOne) and owns a List of LOWERMIDDLE-Entities (OneToMany)
  • LOWERMIDDLE: LOWERMIDDLE holds one UPPERMIDDLE-Entity (ManyToOne) and one BOTTOM-Entity (ManyToOne)
  • BOTTOM: BOTTOM holds a Set of LOWERMIDDLE-Entities (OneToMany)

When I persist one UPPERMIDDLE -Entity connected to at least one LOWERMIDDLE-Entity (the Connections to BOTTOM and TOP are also set) and remove it during the same transaction, I get an NullpointerException in EntityAction.getId(). The NPE is thrown at FlushTime, when a LOWERMIDDLE-Entity connected to the newly persisted but now going to be removed UPPERMIDDLE-Entity should be removed.

When an UPPERMIDDLE-Entity is removed its dependent LOWERMIDDLE-Entities have to be removed and the Collections of TOP- and BOTTOM-Entities have to be updated accordingly.

The NPE only occurs in this specific case, when I remove a UPPERMIDDLE, which was persisted during the transaction and has at least one LOWERMIDDLE-Entity. All the Connections are set properly (no Constraintviolation!) an i tried multiple cascadeTypes and tried to set connections and removed Entities from the Collections properly, but the NPE is still thrown.

Everything works when i remove an UPPERMIDDLE which was already flushed to the Database ( == which was persisted during a previous session) or when i remove an UPPERMIDDLE which has no dependent LOWERMIDDLES.

I use Spring Web Flow, but it seems very unlikely, that this causes the problem.

Any Help would be appreciated.


Code:
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while commiting the transaction
   at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:465)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
   at org.springframework.webflow.persistence.JpaFlowExecutionListener.sessionEnding(JpaFlowExecutionListener.java:128)
   at org.springframework.webflow.engine.impl.FlowExecutionListeners.fireSessionEnding(FlowExecutionListeners.java:208)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.endActiveFlowSession(FlowExecutionImpl.java:396)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.endActiveFlowSession(RequestControlContextImpl.java:238)
   at org.springframework.webflow.engine.EndState.doEnter(EndState.java:107)
   at org.springframework.webflow.engine.State.enter(State.java:194)
   at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
   at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
   at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
   at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105)
   at org.springframework.webflow.engine.State.enter(State.java:194)
   at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
   at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
   at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
   at org.springframework.webflow.engine.ViewState.handleEvent(ViewState.java:230)
   at org.springframework.webflow.engine.ViewState.resume(ViewState.java:196)
   at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:259)
   ... 60 more
Caused by: javax.persistence.RollbackException: Error while commiting the transaction
   at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
   at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:456)
   ... 89 more
Caused by: java.lang.NullPointerException
   at org.hibernate.action.EntityAction.getId(EntityAction.java:63)
   at org.hibernate.action.EntityDeleteAction.postDelete(EntityDeleteAction.java:122)
   at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
   at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
   ... 90 more
08.08.2009 17:39:32 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet Spring MVC Dispatcher Servlet threw exception
java.lang.NullPointerException
   at org.hibernate.action.EntityAction.getId(EntityAction.java:63)
   at org.hibernate.action.EntityDeleteAction.postDelete(EntityDeleteAction.java:122)
   at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
   at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
   at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:456)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
   at org.springframework.webflow.persistence.JpaFlowExecutionListener.sessionEnding(JpaFlowExecutionListener.java:128)
   at org.springframework.webflow.engine.impl.FlowExecutionListeners.fireSessionEnding(FlowExecutionListeners.java:208)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.endActiveFlowSession(FlowExecutionImpl.java:396)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.endActiveFlowSession(RequestControlContextImpl.java:238)
   at org.springframework.webflow.engine.EndState.doEnter(EndState.java:107)
   at org.springframework.webflow.engine.State.enter(State.java:194)
   at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
   at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
   at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
   at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105)
   at org.springframework.webflow.engine.State.enter(State.java:194)
   at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
   at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
   at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
   at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
   at org.springframework.webflow.engine.ViewState.handleEvent(ViewState.java:230)
   at org.springframework.webflow.engine.ViewState.resume(ViewState.java:196)
   at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
   at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:259)
   at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:163)
   at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
   at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
   at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
   at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
   at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
   at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
   at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
   at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
   at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
   at java.lang.Thread.run(Unknown Source)


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.