2010-09-15 4 views
1

Je reçois cette erreur de mise en veille prolongée (dans le titre), lorsque j'éteins la cascade (Cascade.ALL) et commence à em.persist() manuellement les entités les plus basses dans la hiérarchie. Donc, ce n'est pas possible du tout? Je suis sûr que les entités sont persistantes avant, elles sont même dans la base de données, mais j'ai cette erreur. Comment le corriger?
EDIT:objet référence une instance transitoire non enregistrée

java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cz.domain.model.PlayerInMatch.player -> cz.domain.model.Player 
     at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1176) 
     at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1112) 
     at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:1008) 
     at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:412) 
     at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:837) 
     at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5040) 
     at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4805) 
     at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004) 
     at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955) 
     at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198) 
     at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84) 
     at $Proxy202.create(Unknown Source) 
     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.springframework.ejb.access.LocalSlsbInvokerInterceptor.invokeInContext(LocalSlsbInvokerInterceptor.java:71) 
     at org.springframework.ejb.access.AbstractSlsbInvokerInterceptor.invoke(AbstractSlsbInvokerInterceptor.java:189) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
     at $Proxy205.create(Unknown Source) 
     at cz.domain.controller.Controllers.persistMatch(Controllers.java:29) 
     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.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) 
     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) 
     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
     at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) 
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) 
     at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) 
     at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) 
     at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) 
     at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) 
     at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) 
     at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) 
     at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) 
     at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) 
     at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) 
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) 
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) 
     at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 
     at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) 
     at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) 
     at com.sun.grizzly.ContextTask.run(ContextTask.java:69) 
     at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) 
     at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) 
     at java.lang.Thread.run(Thread.java:619) 
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cz.domain.model.PlayerInMatch.player -> cz.domain.model.Player 
     at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:387) 
     at org.hibernate.engine.Cascade.cascade(Cascade.java:172) 
     at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:451) 
     at org.hibernate.event.def.DefaultPersistEventListener.entityIsPersistent(DefaultPersistEventListener.java:158) 
     at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132) 
     at org.hibernate.impl.SessionImpl.firePersistOnFlush(SessionImpl.java:826) 
     at org.hibernate.impl.SessionImpl.persistOnFlush(SessionImpl.java:818) 
     at org.hibernate.engine.CascadingAction$9.cascade(CascadingAction.java:357) 
     at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392) 
     at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335) 
     at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204) 
     at org.hibernate.engine.Cascade.cascade(Cascade.java:161) 
     at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:451) 
     at org.hibernate.event.def.DefaultPersistEventListener.entityIsPersistent(DefaultPersistEventListener.java:158) 
     at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132) 
     at org.hibernate.impl.SessionImpl.firePersistOnFlush(SessionImpl.java:826) 
     at org.hibernate.impl.SessionImpl.persistOnFlush(SessionImpl.java:818) 
     at org.hibernate.engine.CascadingAction$9.cascade(CascadingAction.java:357) 
     at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392) 
     at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335) 
     at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204) 
     at org.hibernate.engine.Cascade.cascade(Cascade.java:161) 
     at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154) 
     at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145) 
     at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88) 
     at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) 
     at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206) 
     at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375) 
     at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:1001) 
     ... 56 more 

Répondre

0

Quand je (...) commencent à (manuellement em.persist) les entités inférieures en la hiérarchie.

Êtes-vous sûr? Hibernate se plaint clairement d'un attribut étant transitoire.

Donc, ce n'est pas possible du tout?

C'est.

Je suis sûr que les entités sont persistantes avant, elles sont même dans la base de données, mais j'ai cette erreur.

Quoi? Comment avez-vous construit le graphe d'objet alors? Pouvez-vous montrer votre code?

+0

cela fonctionne après le passage en hibernation. Je vais revenir à hiberner pour montrer le code dans quelques jours – coubeatczech

+0

@coubeatczech - avez-vous résolu cela? – ripper234

Questions connexes