[ 
https://issues.apache.org/jira/browse/OPENJPA-2405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16509048#comment-16509048
 ] 

robert engels commented on OPENJPA-2405:
----------------------------------------

I don't think this is working correctly in 2.4.2. I have TomEE 7.0.4 installed, 
which uses version 2.4.2.

I have any entity, that has a many to one reference - Customer, contains and 
Address, which has a many to one reference to Country.

In the process of editing, and persisting the Customer (an update) - I load an 
Country using another EntityManager (via a drop down list search), because I 
want to change the Country on the customer.

When I use the following code:

 

 
{code:java}
public String update()
{
   this.conversation.end();

   try
   {
      if (this.id == null)
      {
         this.entityManager.persist(this.customer);
         return "search?faces-redirect=true";
      }
      else
      {
         this.entityManager.merge(customer);
         return "view?faces-redirect=true&id=" + this.customer.getId();
      }
   }
   catch (Exception e)
   {
      FacesContext.getCurrentInstance().addMessage(null, new 
FacesMessage(e.getMessage()));
      return null;
   }
}

{code}
 

 

I get the following exception:

 

If I change the JPA to be eclipselink, it works fine without error, saving 
properly.

Btw, this is the standard petstore sample for JaveEE 7 available at 
[https://github.com/agoncal/agoncal-application-petstore-ee7]

Also, it would seem that I should be able to mark the 'many to one' as cascade 
NEVER and have this work. I would never want to delete the Country when a 
Customer is deleted ??? Also, the 'Country' entries are maintained in a 
standalone fashion. It seems like something is broken here in OpenJPA.

{{11-Jun-2018 20:31:17.191 WARNING [http-nio-8080-exec-3] 
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion 
Unexpected exception from beforeCompletion; transaction will roll back}}
{{ <openjpa-2.4.2-r422266:1777108 nonfatal user error> 
org.apache.openjpa.persistence.ArgumentException: The given instance 
"org.agoncal.application.petstore.model.Country-1225" is not managed by this 
context.}}
{{FailedObject: org.agoncal.application.petstore.model.Country-1225}}
{{ at 
org.apache.openjpa.kernel.BrokerImpl.getStateManagerImpl(BrokerImpl.java:4650)}}
{{ at 
org.apache.openjpa.kernel.BrokerImpl.persistInternal(BrokerImpl.java:2614)}}
{{ at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2602)}}
{{ at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2585)}}
{{ at 
org.apache.openjpa.kernel.SingleFieldManager.preFlushPC(SingleFieldManager.java:800)}}
{{ at 
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:621)}}
{{ at 
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:589)}}
{{ at 
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:510)}}
{{ at 
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:3055)}}
{{ at org.apache.openjpa.kernel.ECopyState.beforeFlush(ECopyState.java:42)}}
{{ at 
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1072)}}
{{ at 
org.apache.openjpa.kernel.BrokerImpl.flushTransAdditions(BrokerImpl.java:2283)}}
{{ at 
org.apache.openjpa.kernel.BrokerImpl.flushAdditions(BrokerImpl.java:2262)}}
{{ at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2144)}}
{{ at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2103)}}
{{ at 
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2021)}}
{{ at 
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:527)}}
{{ at 
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:512)}}
{{ at 
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:413)}}
{{ at 
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:262)}}
{{ at 
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)}}
{{ at 
org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:331)}}
{{ at 
org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:76)}}
{{ at 
org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:77)}}
{{ at 
org.apache.openejb.core.stateful.StatefulContainer.afterInvoke(StatefulContainer.java:930)}}
{{ at 
org.apache.openejb.core.stateful.StatefulContainer.businessMethod(StatefulContainer.java:737)}}
{{ at 
org.apache.openejb.core.stateful.StatefulContainer.invoke(StatefulContainer.java:379)}}
{{ at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:265)}}
{{ at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:260)}}
{{ at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:89)}}
{{ at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:347)}}
{{ at 
org.agoncal.application.petstore.view.admin.CustomerBean$$LocalBeanProxy.update(org/agoncal/application/petstore/view/admin/CustomerBean.java)}}
{{ at 
org.agoncal.application.petstore.view.admin.CustomerBean$$OwbNormalScopeProxy0.update(org/agoncal/application/petstore/view/admin/CustomerBean.java)}}
{{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}}
{{ at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}}
{{ at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}}
{{ at java.lang.reflect.Method.invoke(Method.java:498)}}
{{ at org.apache.el.parser.AstValue.invoke(AstValue.java:247)}}
{{ at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)}}
{{ at 
org.apache.webbeans.el22.WrappedMethodExpression.invoke(WrappedMethodExpression.java:52)}}
{{ at 
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)}}
{{ at 
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)}}
{{ at 
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)}}
{{ at javax.faces.component.UICommand.broadcast(UICommand.java:315)}}
{{ at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)}}
{{ at 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)}}
{{ at 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)}}
{{ at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)}}
{{ at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)}}
{{ at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)}}
{{ at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)}}
{{ at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)}}
{{ at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)}}
{{ at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)}}
{{ at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)}}
{{ at org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)}}
{{ at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)}}
{{ at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)}}
{{ at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)}}
{{ at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)}}
{{ at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)}}
{{ at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)}}
{{ at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)}}
{{ at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)}}
{{ at 
org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)}}
{{ at 
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)}}
{{ at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)}}
{{ at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)}}
{{ at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)}}
{{ at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)}}
{{ at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)}}
{{ at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)}}
{{ at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}}
{{ at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)}}
{{ at java.lang.Thread.run(Thread.java:748)}}

 

 

> EntityManager.merge does not work for entity that is managed by another 
> EntityManager
> -------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2405
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2405
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.2.3
>            Reporter: Arne Limburg
>            Assignee: Jody Grassel
>            Priority: Major
>             Fix For: 2.3.0
>
>         Attachments: OPENJPA-2405.patch
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> EntityManager.merge does not work for entity that is managed by another 
> EntityManager. Instead of updating that entity OpenJPA tries to persist the 
> entity a second time



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to