Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa EJB 3.0-实体关系-javax.EJB.EJBTransactionRolledbackException_Jpa_Entity_Ejb 3.0_Entity Relationship_Many To One - Fatal编程技术网

Jpa EJB 3.0-实体关系-javax.EJB.EJBTransactionRolledbackException

Jpa EJB 3.0-实体关系-javax.EJB.EJBTransactionRolledbackException,jpa,entity,ejb-3.0,entity-relationship,many-to-one,Jpa,Entity,Ejb 3.0,Entity Relationship,Many To One,我有两个实体 订单详情 命令 在订单中,我与另一个名为客户的实体有一个@manytone关系。在OrderDetails中,我有两个@manytone关系,它们引用订单和另一个实体“Pizzas” 当我合并OrderDetails实体时,我得到了javax.ejb.EJBTransactionRolledbackException异常。但是,当我删除Orders中的OrderDetails关系时,我能够顺利地合并实体 无法将具有ManyToOne关系的对象与一个实体合并,而intern与另一个实

我有两个实体

  • 订单详情
  • 命令
  • 订单
    中,我与另一个名为
    客户
    实体
    有一个
    @manytone
    关系。在
    OrderDetails
    中,我有两个
    @manytone
    关系,它们引用
    订单
    和另一个实体“Pizzas”


    当我合并
    OrderDetails
    实体时,我得到了
    javax.ejb.EJBTransactionRolledbackException
    异常。但是,当我删除
    Orders
    中的
    OrderDetails
    关系时,我能够顺利地合并实体

    无法将具有
    ManyToOne
    关系的对象与一个实体合并,而intern与另一个实体具有@ManyToOne关系

    我的applicationclient将调用会话远程方法。它将尝试像这样保存OrderDetails

        Pizzas pizza = new Pizzas();
        Query pizzaQuery = entityManager.createQuery("select pizza from     Pizzas pizza where pizza.pizzaCode like 'PIZERIA1'");
    
        pizza = (Pizzas) pizzaQuery.getSingleResult();
    
        orderSerialNumber = 1;
    
        Orders orders = new Orders();
        Query ordersQuery = entityManager.createQuery("select order from Orders order where order.orderNumber = 453");
        orders = (Orders) ordersQuery.getSingleResult();
    
        OrderDetails orderDetails = new OrderDetails();
        orderDetails.setSerialNumber(orderSerialNumber);
        orderDetails.setPizzas(pizza);
        orderDetails.setOrders(orders);
        entityManager.merge(orderDetails);
    
    我在尝试合并时正在尝试

    STACKTRACE

    Exception in thread "main" javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
    at org.jboss.ejb3.tx.Ejb3TxPolicy.handleEndTransactionException(Ejb3TxPolicy.java:54)
    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:190)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.stateful.StatefulContainer.dynamicInvoke(StatefulContainer.java:571)
    at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
    at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
    at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
    at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
    at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
    at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
    at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
    at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
    Caused by: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Could not commit transaction.
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1435)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
    at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:170)
    at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
    at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.stateful.StatefulContainer.dynamicInvoke(StatefulContainer.java:571)
    at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
    at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
    at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
    at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
    at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
    at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
    at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
    at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:211)
    at org.jboss.remoting.Client.invoke(Client.java:1724)
    at org.jboss.remoting.Client.invoke(Client.java:629)
    at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
    at com.sun.proxy.$Proxy5.invoke(Unknown Source)
    at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
    at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
    at com.sun.proxy.$Proxy4.placeOrder(Unknown Source)
    at com.client.ApplicationBeansClient.main(ApplicationBeansClient.java:46)
    at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:72)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
    at com.sun.proxy.$Proxy5.invoke(Unknown Source)
    at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
    at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
    at com.sun.proxy.$Proxy4.placeOrder(Unknown Source)
    at com.client.ApplicationBeansClient.main(ApplicationBeansClient.java:46)
    Caused by: java.lang.Throwable: setRollbackOnly called from:
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.setRollbackOnly(TransactionImple.java:392)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.setRollbackOnly(BaseTransaction.java:195)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.setRollbackOnly(BaseTransactionManagerDelegate.java:123)
    at org.hibernate.ejb.AbstractEntityManagerImpl.markAsRollback(AbstractEntityManagerImpl.java:421)
    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:576)
    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
    at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:513)
    at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:101)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:269)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:89)
    at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1423)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
    at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:170)
    at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
    at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.stateful.StatefulContainer.dynamicInvoke(StatefulContainer.java:571)
    at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
    at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
    at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
    at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
    at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
    at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
    at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
    at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
    
    OrderDetails.java

        @Entity
        @Table(name="P_ORDER_DETAILS")
        public class OrderDetails implements Serializable
        {
            @Id
            private int serialNumber;
    
            //private Orders orders;
    
            private Pizzas pizzas;
    
            public int getSerialNumber()
            {
                return this.serialNumber;
            }
            public void setSerialNumber(int serialNumber)
            {
                this.serialNumber = serialNumber;
            }
    
        /*  @ManyToOne
            @JoinColumn(name="ORDERS",referencedColumnName="ORDER_NUMBER")
            public Orders getOrders()
            {
                return this.orders;
            }
            public void setOrders(Orders orders)
            {
                this.orders = orders;
            }*/
    
            @ManyToOne
            @JoinColumn(name="PIZZAS",referencedColumnName="PIZZACODE")
            public Pizzas getPizzas()
            {
                return this.pizzas;
            }
            public void setPizzas(Pizzas pizzas)
            {
                this.pizzas = pizzas;
            }
        }
    
    @Entity
    @Table(name="P_ORDERS")
    public class Orders implements Serializable 
    {
        @Id
        @Column(name="ORDER_NUMBER")
        private int orderNumber;
    
        @Column(name="CUSTOMER")
        private Customer customer;
    
        public void setOrderNumber(int orderNumber)
        {
            this.orderNumber = orderNumber;
        }
        public int getOrderNumber()
        {
            return this.orderNumber;
        }
    
        public void setCustomer(Customer customer)
        {
            this.customer = customer;
        }
    
        @ManyToOne
        @JoinTable(name="P_CUSTOMER_ORDERS", joinColumns=@JoinColumn(name="CUSTOMER",referencedColumnName="USERNAME"))
        public Customer getCustomer()
        {
            return this.customer;
        }
    }
    
    Orders.java

        @Entity
        @Table(name="P_ORDER_DETAILS")
        public class OrderDetails implements Serializable
        {
            @Id
            private int serialNumber;
    
            //private Orders orders;
    
            private Pizzas pizzas;
    
            public int getSerialNumber()
            {
                return this.serialNumber;
            }
            public void setSerialNumber(int serialNumber)
            {
                this.serialNumber = serialNumber;
            }
    
        /*  @ManyToOne
            @JoinColumn(name="ORDERS",referencedColumnName="ORDER_NUMBER")
            public Orders getOrders()
            {
                return this.orders;
            }
            public void setOrders(Orders orders)
            {
                this.orders = orders;
            }*/
    
            @ManyToOne
            @JoinColumn(name="PIZZAS",referencedColumnName="PIZZACODE")
            public Pizzas getPizzas()
            {
                return this.pizzas;
            }
            public void setPizzas(Pizzas pizzas)
            {
                this.pizzas = pizzas;
            }
        }
    
    @Entity
    @Table(name="P_ORDERS")
    public class Orders implements Serializable 
    {
        @Id
        @Column(name="ORDER_NUMBER")
        private int orderNumber;
    
        @Column(name="CUSTOMER")
        private Customer customer;
    
        public void setOrderNumber(int orderNumber)
        {
            this.orderNumber = orderNumber;
        }
        public int getOrderNumber()
        {
            return this.orderNumber;
        }
    
        public void setCustomer(Customer customer)
        {
            this.customer = customer;
        }
    
        @ManyToOne
        @JoinTable(name="P_CUSTOMER_ORDERS", joinColumns=@JoinColumn(name="CUSTOMER",referencedColumnName="USERNAME"))
        public Customer getCustomer()
        {
            return this.customer;
        }
    }
    

    我也遇到了同样的问题,我通过创建一个带有
    all
    配置的服务器来解决了这个问题,如下图所示(可能您已经创建了带有
    default
    配置的服务器)


    javax.ejb.EJBTransactionRolledbackException
    由于某些原因发生异常,请发布完整的堆栈跟踪。@PredFragmaric我已经添加了堆栈跟踪。您是否可能在
    com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitandisassociate()中吞下了一些异常?这个stacktrace没有提供任何有用的东西。不,我没有吃任何异常。当然,这没什么错。级联选项只需要正确配置即可。