报错如下:
javax.ejb.TransactionRolledbackLocalException: EJB Exception:; nested exception is: javax.ejb.EJBException: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.javax.ejb.EJBException: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.at relation.Accout_3gj82y__WebLogic_CMP_RDBMS.setUid(Accout_3gj82y__WebLogic_CMP_RDBMS.java:437)at relation.AccoutBean.ejbCreate(AccoutBean.java:9)at relation.Accout_3gj82y__WebLogic_CMP_RDBMS.ejbCreate(Accout_3gj82y__WebLogic_CMP_RDBMS.java:1946)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:324)at weblogic.ejb20.manager.DBManager.create(DBManager.java:1180)at weblogic.ejb20.manager.DBManager.localCreate(DBManager.java:1138)at weblogic.ejb20.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:170)at relation.Accout_3gj82y_LocalHomeImpl.create(Accout_3gj82y_LocalHomeImpl.java:77)at relation.SessAppBean.addAccout(SessAppBean.java:89)at relation.SessApp_v97ldc_EOImpl.addAccout(SessApp_v97ldc_EOImpl.java:46)at relation.SessApp_v97ldc_EOImpl_WLSkel.invoke(Unknown Source)at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)javax.ejb.TransactionRolledbackLocalException: EJB Exception:; nested exception is: javax.ejb.EJBException: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.at weblogic.ejb20.internal.EJBRuntimeUtils.throwTransactionRolledbackLocal(EJBRuntimeUtils.java:247)at weblogic.ejb20.internal.BaseEJBLocalHome.handleSystemException(BaseEJBLocalHome.java:246)at weblogic.ejb20.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:181)at relation.Accout_3gj82y_LocalHomeImpl.create(Accout_3gj82y_LocalHomeImpl.java:77)at relation.SessAppBean.addAccout(SessAppBean.java:89)at relation.SessApp_v97ldc_EOImpl.addAccout(SessApp_v97ldc_EOImpl.java:46)at relation.SessApp_v97ldc_EOImpl_WLSkel.invoke(Unknown Source)at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

解决方案 »

  1.   

    简单的说:nested的事件,EJB现在不支持。你嵌套事务了
      

  2.   

    注:不支持在一个事务中试图使用消息生产者和消息消费者之间的请求/响应通信。
    处理事务的方法:
    public void commit()throws JMSException
    提交当前事务的所有消息,并释放锁。如失败,则抛出TransactionRollBackException,JMSException,IllegalStateException。 JMS API:javax.jms.Session接口:
    通过编程控制Message-Drive Bean或者JMS客户中的事务,可以使用JTA或JMS API。JMS支持异步通信,故存在两个分离的事务。
    1. 消息生产者与消息提供者之间,保证消息被传送到消息服务器。
    2. 消息服务器与消息消费者之间
    注:不支持在一个事务中试图使用消息生产者和消息消费者之间的请求/响应通信。
    处理事务的方法:
    public void commit()throws JMSException
    提交当前事务的所有消息,并释放锁。如失败,则抛出TransactionRollBackException,JMSException,IllegalStateException。public void rollback() throws JMSException
    回滚当前事务中的任何消息,并释放锁。
      

  3.   

    Mandatory:
    Mandatory强制使bean方法被调用时一个事务必须已经运行。如果没有一个运行的事务的话,就会抛给调用者javax.ejb.TransactionRequiredException这个异常,如果客户是本地的则抛出javax.ejb.TransactionRequiredLocalException这个异常。
    Mandatory是一安全的事务属性。他确保了bean在一事务中运行。如果一个事务没有执行,则没有任何办法调用bean。Mandatory的这种方法是依赖于第三部分来开始一个事务的。容器不能够自动地启动一个事务;并且还会抛出异常给调用者。这是主要的Mandatory与Supports不同的地方。当bean在一个大型系统中,例如一工作流系统,在那bean是大型操作中的一部分并且要求在bean调用前先要启动事务。