One to Many CMP Bean

Does anyone have a One to Many relationship for CMP working in 9.0.3 or 9.0.4? If so can you please send me the code at [email protected] I continue to get the following error:
com.evermind.server.rmi.OrionRemoteException: Transaction was rolled back: Database error: java.sql.SQLException: ORA-00904: invalid column name
Both beans work seperate but once I put the relationship in that is when I get the error.
Here is my relationship
<relationships>
<ejb-relation>
<ejb-relation-name>CostCenter - ChartEJB</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>CostCenter may have many ChartEJB</ejb-relationship-role-name>
<multiplicity>One</multiplicity>
<relationship-role-source>
<ejb-name>CostCenter</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>charts</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>ChartEJB belongs to CostCenter</ejb-relationship-role-name>
<multiplicity>Many</multiplicity>
<relationship-role-source>
<ejb-name>ChartEJB</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation>
</relationships>

I think, that problem is in the orion-ejb-jar.xml Maybe the persitance name is wrong...
here is our definition ejb-jar.xml:
<ejb-relation>
<ejb-relation-name>AidFormProvided - AidForm</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>AidFormProvided - AidForm</ejb-relationship-role-name>
<multiplicity>Many</multiplicity>
<relationship-role-source>
<ejb-name>AidFormProvidedBean</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>aidFormP</cmr-field-name>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>AidForm-belongs-to-AidFormProvided</ejb-relationship-role-name>
<multiplicity>One</multiplicity>
<relationship-role-source>
<ejb-name>AidFormBean</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>aidFromProvideds</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
</ejb-relation>
here is definotion from orion-ejb-jar.xml:
....AidFormProvidedBean...
     <cmp-field-mapping name="providedDate" persistence-name="PROVIDED_DATE" />
     <cmp-field-mapping name="aidFormP">
                    <entity-ref home="AidFormBean">
                         <cmp-field-mapping name="aidFormP" persistence-name="AIDFORMOID" />
                    </entity-ref>
               </cmp-field-mapping>
...AidFormBean...
<cmp-field-mapping name="aidFromProvideds">
<collection-mapping table="SM_AID_FORM_PROVIDED">
<primkey-mapping>
<cmp-field-mapping name="aidFormP">
<entity-ref home="AidFormBean">
<cmp-field-mapping name="aidFormP" persistence-name="AIDFORMOID" />
</entity-ref>
</cmp-field-mapping>
</primkey-mapping>
<value-mapping type="sk.datalock.sama.ejb.AidFormProvidedEJB">
<cmp-field-mapping name="oid">
<entity-ref home="AidFormProvidedBean">
<cmp-field-mapping name="oid" persistence-name="OID" />
</entity-ref>
</cmp-field-mapping>
</value-mapping>
</collection-mapping>
</cmp-field-mapping>
Zajo

Similar Messages

  • Problem Removing CMP 2.0 Bean from Many side of One-to-Many

    I'm getting an exception within the weblogic container when I try to
    delete a bean from the many side of a one-to-many CMR.
    The two entity beans are called CaseFile and CaseExpert. There are
    many CaseExperts for each CaseFile. When you call the remove method
    on the CaseExpert, Weblogic throws a null pointer exception when
    accessing the EntityCache as shown at the bottom of this message. I'm
    using the latest version of Weblogic 7 (WebLogic Server 7.0 Thu Jun
    20 11:47:11 PDT 2002 190955). My relationship section of my
    ejb-jar.xml file is also shown below.
    Any ideas?
    Thanks,
    David
    [email protected]
    javax.ejb.EJBException: EJB Exception:: java.lang.NullPointerException
    at weblogic.ejb20.cache.TxKey.<init>(TxKey.java:30)
    at weblogic.ejb20.cache.EntityCache.doGet(EntityCache.java:158)
    at weblogic.ejb20.cache.EntityCache.get(EntityCache.java:118)
    at weblogic.ejb20.manager.DBManager.getReadyBean(DBManager.java:252)
    at weblogic.ejb20.manager.DBManager.lookup(DBManager.java:949)
    at gov.usdoj.usa.ecms.casefile.exposure.ejb.CaseExpertBean_76ewyr__WebLo
    gic_CMP_RDBMS.__WL_setCaseFile(CaseExpertBean_76ewyr__WebLogic_CMP_RDBMS.java:45
    2)
    at gov.usdoj.usa.ecms.casefile.exposure.ejb.CaseExpertBean_76ewyr__WebLo
    gic_CMP_RDBMS.__WL_setCaseFile(CaseExpertBean_76ewyr__WebLogic_CMP_RDBMS.java:43
    1)
    at gov.usdoj.usa.ecms.casefile.exposure.ejb.CaseExpertBean_76ewyr__WebLo
    gic_CMP_RDBMS.ejbRemove(CaseExpertBean_76ewyr__WebLogic_CMP_RDBMS.java:1978)
    at weblogic.ejb20.manager.DBManager.remove(DBManager.java:876)
    at weblogic.ejb20.internal.EntityEJBLocalObject.remove(EntityEJBLocalObj
    ect.java:95)
    <relationships>
    <ejb-relation>
    <ejb-relation-name>caseExpert-caseFile</ejb-relation-name>
    <ejb-relationship-role>
    <ejb-relationship-role-name>CaseExpert-CaseFile</ejb-relationship-role-name>
    <multiplicity>many</multiplicity>
    <relationship-role-source>
    <ejb-name>CaseExpertEJB</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>caseFile</cmr-field-name>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
    <ejb-relationship-role-name>CaseFile-CaseExperts</ejb-relationship-role-name>
    <multiplicity>one</multiplicity>
    <relationship-role-source>
    <ejb-name>CaseFileEJB</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>caseExperts</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type>
    </cmr-field>
    </ejb-relationship-role>
    </ejb-relation>
    </relationships>

    Wrong newsgroup, needs to go to one of the ejb newsgroups.
    mbg
    "Sai S Prasad" <[email protected]> wrote in message
    news:3ec28167$[email protected]..
    >
    Hi,
    I like to do the following:
    1) Map one bean corresponding to table A to many beans corresponding totable
    B 2) table B has two columns as the primary keys.
    3) One of the primary key column in table B is a foreign key pointing tothe primary
    key of table A.
    4) bean corresponding to table A has the cmr Collection field
    I am not able to map this scenario. I guess the mapping is possible aslong as
    each table has its own unrelated primary keys. If anyone has tried this,please...please...help.
    >
    >
    Thanks.

  • Weblogic-cmp-rdbms-jar.xml for One-To-Many unidirectional relationship

    hi,
    I am trying to create a simple cmp One-To-Many unidirectional relationship and deploy the same in weblogic. Can someone help me with the weblogic-cmp-rdbms-jar.xml. Am attaching the weblogic-cmp-rdbms-jar. xml tht i am using as also the corresponding ejb-jar.xml. Pls. note tht i want a unidirectional relationship here. one i am tryng However i get this error:
    Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error was: Role 'Supplier supplies Products' of relationship 'Product Supplier' contains an invalid key-column value of 'productID'. The key-column must specify a primary key column in the related bean. However, there is no primary key column named 'productID' defined in the related bean 'ProductEJB' or else 'productID' is not being recognized due to case mismatch. My weblogic-cmp-rdbms-jar
    <?xml version="1.0"?>
    <!DOCTYPE weblogic-rdbms-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN' 'http://www.bea.com/servers/wls810/dtd/weblogic-rdbms-jar.dtd'>
    <weblogic-rdbms-jar>
    <weblogic-rdbms-bean>
         <ejb-name>SupplierEJB</ejb-name>
         <data-source-name>RJDataSource</data-source-name>
         <table-map>
               <table-name>AA_Supplier</table-name>
               <field-map>
                     <cmp-field>supplierID</cmp-field>
                     <dbms-column>supplierID</dbms-column>
               </field-map>
               <field-map>
                    <cmp-field>name</cmp-field>
                    <dbms-column>name</dbms-column>
               </field-map>
         </table-map>
    </weblogic-rdbms-bean>
    <weblogic-rdbms-bean>
           <ejb-name>ProductEJB</ejb-name>
           <data-source-name>RJDataSource</data-source-name>
           <table-map>
                 <table-name>AA_Product</table-name>
                 <field-map>
                      <cmp-field>productID</cmp-field>
                      <dbms-column>productid</dbms-column>
                 </field-map>
                 <field-map>
                      <cmp-field>description</cmp-field>
                      <dbms-column>description</dbms-column>
                 </field-map>
                 <field-map>
                      <cmp-field>basePrice</cmp-field>
                      <dbms-column>baseprice</dbms-column>
                 </field-map>
                <field-map>
                      <cmp-field>name</cmp-field>
                      <dbms-column>name</dbms-column>
                 </field-map>
                 <field-map>
                     <cmp-field>supplierID</cmp-field>
                       <dbms-column>supplierID</dbms-column>
                 </field-map>
            </table-map>
    </weblogic-rdbms-bean>
    <weblogic-rdbms-relation>
         <relation-name>Product Supplier</relation-name>
         <weblogic-relationship-role>
              <relationship-role-name>Supplier supplies Products</relationship-role-name>
              <relationship-role-map>
                   <column-map>
                        <foreign-key-column>supplierID</foreign-key-column>
                        <key-column>productID</key-column>
                   </column-map>
              </relationship-role-map>
         </weblogic-relationship-role>
         <weblogic-relationship-role>
              <relationship-role-name>Product supplied by Supplier</relationship-role-name>
              <relationship-role-map>
              <column-map>
                   <foreign-key-column>products</foreign-key-column>
                   <key-column>supplierID</key-column>
              </column-map>
              </relationship-role-map>
         </weblogic-relationship-role>
    </weblogic-rdbms-relation>
    </weblogic-rdbms-jar> My ejb-jar.xml
    <?xml version="1.0"?>
    <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
    <ejb-jar>
         <enterprise-beans>
         <entity>
              <ejb-name>SupplierEJB</ejb-name>
              <home>com.tpt.practice.entityBeans.cmp.product.relationship.SupplierHome</home>
              <remote>com.tpt.practice.entityBeans.cmp.product.relationship.Supplier</remote>
              <ejb-class>com.tpt.practice.entityBeans.cmp.product.relationship.SupplierEJB</ejb-class>
              <persistence-type>Container</persistence-type>
              <prim-key-class>java.lang.String</prim-key-class>
              <reentrant>False</reentrant>
              <cmp-version>2.x</cmp-version>
              <abstract-schema-name>AA_Supplier</abstract-schema-name>
              <cmp-field>
                   <field-name>supplierID</field-name>
              </cmp-field>
              <cmp-field>
                   <field-name>name</field-name>
              </cmp-field>
              <primkey-field>supplierID</primkey-field>
              <ejb-ref>
                        <ejb-ref-name>ProducEJB</ejb-ref-name>
                        <ejb-ref-type>Entity</ejb-ref-type>
                        <home>com.tpt.practice.entityBeans.cmp.product.ProductHome</home>
                        <remote>com.tpt.practice.entityBeans.cmp.product.Product</remote>
                        <ejb-link>ProductEJB#ProductEJB.jar</ejb-link>
              </ejb-ref>
              <query>
                   <query-method>
                        <method-name>findByName</method-name>
                        <method-params>
                             <method-param>java.lang.String</method-param>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Supplier AS a WHERE a.name =
                        ?1]]>
                   </ejb-ql>
              </query>
              <query>
                   <query-method>
                        <method-name>findAllSuppliers</method-name>
                        <method-params>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Supplier AS a WHERE a.supplierID
                        IS NOT NULL]]>
                   </ejb-ql>
              </query>
         </entity>
         <entity>
              <ejb-name>ProductEJB</ejb-name>
              <home>com.tpt.practice.entityBeans.cmp.product.relationship.ProductHome</home>
              <remote>com.tpt.practice.entityBeans.cmp.product.relationship.Product</remote>
              <local-home>com.tpt.practice.entityBeans.cmp.product.relationship.ProductLocalHome</local-home>
              <local>com.tpt.practice.entityBeans.cmp.product.relationship.ProductLocal</local>
              <ejb-class>com.tpt.practice.entityBeans.cmp.product.relationship.ProductEJB</ejb-class>
              <persistence-type>Container</persistence-type>
              <prim-key-class>com.tpt.practice.entityBeans.cmp.product.relationship.ProductPK</prim-key-class>
              <reentrant>False</reentrant>
              <cmp-version>2.x</cmp-version>
              <abstract-schema-name>AA_Product</abstract-schema-name>
              <cmp-field>
                   <field-name>productID</field-name>
              </cmp-field>
              <cmp-field>
                   <field-name>name</field-name>
              </cmp-field>
              <cmp-field>
                   <field-name>description</field-name>
              </cmp-field>
              <cmp-field>
                   <field-name>basePrice</field-name>
              </cmp-field>
              <cmp-field>
                   <field-name>supplierID</field-name>
              </cmp-field>
              <primkey-field>productID</primkey-field>
              <query>
                   <query-method>
                        <method-name>findByName</method-name>
                        <method-params>
                             <method-param>java.lang.String</method-param>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Product AS a WHERE a.name =
                        ?1]]>
                   </ejb-ql>
              </query>
              <query>
                   <query-method>
                        <method-name>findByDescription</method-name>
                        <method-params>
                             <method-param>java.lang.String</method-param>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Product AS a WHERE a.description
                        = ?1]]>
                   </ejb-ql>
              </query>
              <query>
                   <query-method>
                        <method-name>findByBasePrice</method-name>
                        <method-params>
                             <method-param>double</method-param>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Product AS a WHERE a.basePrice =
                        ?1]]>
                   </ejb-ql>
              </query>
              <query>
                   <query-method>
                        <method-name>findExpensiveProducts</method-name>
                        <method-params>
                             <method-param>double</method-param>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Product AS a WHERE a.basePrice >
                        ?1]]>
                   </ejb-ql>
              </query>
              <query>
                   <query-method>
                        <method-name>findCheapProducts</method-name>
                        <method-params>
                             <method-param>double</method-param>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Product AS a WHERE a.basePrice <
                        ?1]]>
                   </ejb-ql>
              </query>
              <query>
                   <query-method>
                        <method-name>findAllProducts</method-name>
                        <method-params>
                        </method-params>
                   </query-method>
                   <ejb-ql>
                        <![CDATA[SELECT OBJECT(a) FROM AA_Product AS a WHERE a.productID
                        IS NOT NULL]]>
                   </ejb-ql>
              </query>
         </entity>
         </enterprise-beans>
         <relationships>
         <ejb-relation>
              <ejb-relation-name>Product Supplier</ejb-relation-name>
              <ejb-relationship-role>
                   <ejb-relationship-role-name>Supplier supplies Products</ejb-relationship-role-name>
                   <multiplicity>One</multiplicity>
                   <relationship-role-source>
                        <ejb-name>SupplierEJB</ejb-name>
                   </relationship-role-source>
                   <cmr-field>
                        <cmr-field-name>products</cmr-field-name>
                        <cmr-field-type>java.util.Collection</cmr-field-type>
                   </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                   <ejb-relationship-role-name>Product supplied by Supplier</ejb-relationship-role-name>
                   <multiplicity>Many</multiplicity>
                   <relationship-role-source>
                        <ejb-name>ProductEJB</ejb-name>
                   </relationship-role-source>
              </ejb-relationship-role>
         </ejb-relation>
         </relationships>
         <assembly-descriptor>
              <container-transaction>
              <method>
                   <ejb-name>SupplierEJB</ejb-name>
                   <method-intf>Remote</method-intf>
                   <method-name>*</method-name>
              </method>
              <trans-attribute>Required</trans-attribute>
              </container-transaction>
         </assembly-descriptor>
    </ejb-jar>

    I think u r some confusion with productID and SuppliedID . primary key of one column( productId ) can be a foreign key of other table colum( SuppliedID). but foreign key( SuppliedID) can not be a primary key of second table .u declared SuppliedId as primary key . so ur mapping is incorrect.

  • One to Many relationship in CMP

    Hi,
    How to create CMP entity bean that can map One To Many relationship?
    Thanks.
    (Actually, i have post this question in "Java programming" forum becoz i couldn't find the EJB link in forum main page...)

    Hello Friend,
    Go carefully through the RosterApp example in the J2EE tutorial.
    It sure is going to help you.
    See each and every tab and the values in the deployment tool.
    Best of Luck

  • Urgent : java bean having bidirectional one to many relationship

    Hi,
    We have complex requirement in our application.
    We need to copy java bean having bidirectional one to many relationship to another javabean having bidirectional one to many relationship..
    E.g
    Class Basket1 {
    public String color;
    pubic String type;
    public List<Basket1> basketList = new ArrayList()
    Class Basket2 {
    public String color;
    pubic String type;
    public List<Basket2> basketList = new ArrayList()
    We need to exact copy Basket1 to Basket2. We are in trouble to copy List of child because we do not have how many child Basket1 have of same type..
    Can someone help us how we can implement such kind of complex object bidirectional one to many relationship??

    I can't see anything bidirectional about these relationships. What I can see is a couple of BasketN classes that look identical so I don't know why they both exist, and they both contain lists of themselves as members, which suggests some kind of tree structure. Nothing bidirectional there. I can see tat these things can form circular object graphs but I don't see why you would want to do that.
    We need to exact copy Basket1 to Basket2And I don't know what that means. Please explain.

  • Mapping a CMP bean to more than one table

    Hello,
    I like to map a CMP bean to more than one table. I am using wlserver7.0 SP2. I
    have a VendorBean with a CMP field "comments" mapped to VENDOR_COMMENTS table.
    All other CMP fields in VendorBean are mapped to VENDOR table. Below is the snippet
    of weblogic-cmp-rdbms-jar.xml:
    <weblogic-rdbms-bean>
    <ejb-name>VendorBean</ejb-name>
    <data-source-name>sweepDataSource</data-source-name>
    <table-map>
    <table-name>VENDOR</table-name>
    <field-map>
    <cmp-field>expIndicator</cmp-field>
    <dbms-column>VENDOR_EXP_IND</dbms-column>
    </field-map>
    <field-map>
    <cmp-field>vendorId</cmp-field>
    <dbms-column>VENDOR_SEQ_KEY</dbms-column>
    </field-map>
    </table-map>
    <table-map>
         <table-name>VENDOR_COMMENTS</table-name>
         <field-map>
    <cmp-field>vendorId</cmp-field>
    <dbms-column>VENDOR_SEQ_KEY</dbms-column>
    </field-map>
         <field-map>
    <cmp-field>comments</cmp-field>
    <dbms-column>VENDOR_COMMENT</dbms-column>
    </field-map>
    </table-map>
    As you can see, "vendorId" is the primary key cmp field mapped to VENDOR_SEQ_KEY
    column in both tables. The relationship between the table rows are 1 to 1. When
    I run ejbc, I get the exception below:
    [ejbc] weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Asserti
    on violated ]
    [ejbc] at weblogic.utils.Debug.assertion(Debug.java:74)
    [ejbc] at weblogic.ejb20.cmp.rdbms.RDBMSBean.processRole(RDBMSBean.java
    :1389)
    [ejbc] at weblogic.ejb20.cmp.rdbms.RDBMSBean.processDescriptors(RDBMSBe
    an.java:1105)
    [ejbc] at weblogic.ejb20.cmp.rdbms.Deployer.readTypeSpecificData(Deploy
    er.java:299)
    [ejbc] at weblogic.ejb20.persistence.PersistenceType.setTypeSpecificFil
    e(PersistenceType.java:490)
    [ejbc] at weblogic.ejb20.persistence.PersistenceType.setupDeployer(Pers
    istenceType.java:407)
    [ejbc] at weblogic.ejb20.deployer.CMPInfoImpl.setup(CMPInfoImpl.java:11
    4)
    [ejbc] at weblogic.ejb20.ejbc.EJB20CMPCompiler.generatePersistenceSourc
    es(EJB20CMPCompiler.java:64)
    [ejbc] at weblogic.ejb20.ejbc.EJBCompiler.doCompile(EJBCompiler.java:22
    3)
    [ejbc] at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:3
    44)
    [ejbc] at weblogic.ejbc20.runBody(ejbc20.java:470)
    [ejbc] at weblogic.utils.compiler.Tool.run(Tool.java:126)
    [ejbc] at weblogic.ejbc20.main(ejbc20.java:711)
    But if I put the "comments" <field-map> inside the VENDOR <table-map> and get
    rid off the <table-map> for VENDOR_COMMENTS, I was able to run ejbc. Of course,
    I get the run time exception during deployment because, there is no column called
    "VENDOR_COMMENT" in VENDOR table. Please help me. Thanks a million.

    Wrong newsgroup, needs to go to one of the ejb newsgroups.
    mbg
    "Sai S Prasad" <[email protected]> wrote in message
    news:[email protected]...
    >
    Hello,
    I like to map a CMP bean to more than one table. I am using wlserver7.0SP2. I
    have a VendorBean with a CMP field "comments" mapped to VENDOR_COMMENTStable.
    All other CMP fields in VendorBean are mapped to VENDOR table. Below isthe snippet
    of weblogic-cmp-rdbms-jar.xml:
    <weblogic-rdbms-bean>
    <ejb-name>VendorBean</ejb-name>
    <data-source-name>sweepDataSource</data-source-name>
    <table-map>
    <table-name>VENDOR</table-name>
    <field-map>
    <cmp-field>expIndicator</cmp-field>
    <dbms-column>VENDOR_EXP_IND</dbms-column>
    </field-map>
    <field-map>
    <cmp-field>vendorId</cmp-field>
    <dbms-column>VENDOR_SEQ_KEY</dbms-column>
    </field-map>
    </table-map>
    <table-map>
    <table-name>VENDOR_COMMENTS</table-name>
    <field-map>
    <cmp-field>vendorId</cmp-field>
    <dbms-column>VENDOR_SEQ_KEY</dbms-column>
    </field-map>
    <field-map>
    <cmp-field>comments</cmp-field>
    <dbms-column>VENDOR_COMMENT</dbms-column>
    </field-map>
    </table-map>
    As you can see, "vendorId" is the primary key cmp field mapped toVENDOR_SEQ_KEY
    column in both tables. The relationship between the table rows are 1 to 1.When
    I run ejbc, I get the exception below:
    [ejbc] weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[Asserti
    on violated ]
    [ejbc] at weblogic.utils.Debug.assertion(Debug.java:74)
    [ejbc] atweblogic.ejb20.cmp.rdbms.RDBMSBean.processRole(RDBMSBean.java
    :1389)
    [ejbc] atweblogic.ejb20.cmp.rdbms.RDBMSBean.processDescriptors(RDBMSBe
    an.java:1105)
    [ejbc] atweblogic.ejb20.cmp.rdbms.Deployer.readTypeSpecificData(Deploy
    er.java:299)
    [ejbc] atweblogic.ejb20.persistence.PersistenceType.setTypeSpecificFil
    e(PersistenceType.java:490)
    [ejbc] atweblogic.ejb20.persistence.PersistenceType.setupDeployer(Pers
    istenceType.java:407)
    [ejbc] atweblogic.ejb20.deployer.CMPInfoImpl.setup(CMPInfoImpl.java:11
    4)
    [ejbc] atweblogic.ejb20.ejbc.EJB20CMPCompiler.generatePersistenceSourc
    es(EJB20CMPCompiler.java:64)
    [ejbc] atweblogic.ejb20.ejbc.EJBCompiler.doCompile(EJBCompiler.java:22
    3)
    [ejbc] atweblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:3
    44)
    [ejbc] at weblogic.ejbc20.runBody(ejbc20.java:470)
    [ejbc] at weblogic.utils.compiler.Tool.run(Tool.java:126)
    [ejbc] at weblogic.ejbc20.main(ejbc20.java:711)
    But if I put the "comments" <field-map> inside the VENDOR <table-map> andget
    rid off the <table-map> for VENDOR_COMMENTS, I was able to run ejbc. Ofcourse,
    I get the run time exception during deployment because, there is no columncalled
    "VENDOR_COMMENT" in VENDOR table. Please help me. Thanks a million.

  • Persisting CMP bean over more than one table

    Hello,
    I was wondering if it is possible to persist an Entity Bean over more than
    one table using CMP. For example 3 attributes go in table A and 2 attributes
    go in table B.
    I can see this might come in handy when having some kind of inheritance in
    your architecture.
    Thanks,
    Rein Reezigt

    CMP are based on one DB object however object could be a database table or a
    view. You can create a view and base your bean on that view. This is mostly
    useful for read-only entity beans that just do select queries because databases
    have all kind of different restrictions on update froma view, ( for example
    ORACLE allows update to only one table in view). However in case you need a
    logical abstraction of multiple tables, consider EJB2.0 relations or a product
    like toplink for your object to relational mapping.
    Viresh Garg
    Principal Developer Relations Engineer
    BEA Systems
    Rein Reezigt wrote:
    Hello,
    I was wondering if it is possible to persist an Entity Bean over more than
    one table using CMP. For example 3 attributes go in table A and 2 attributes
    go in table B.
    I can see this might come in handy when having some kind of inheritance in
    your architecture.
    Thanks,
    Rein Reezigt

  • One-to-many relationship within one bean

    hello all,
    Does S1 support a container managed one-to-many relationship to itself?
    I used the verifer to verify my DD and the error is reported. (this prototype is migrated from weblogic6.1 and I use the S1 migration tool for the DD generation)
    -----------------database schema-----------------
    CREATE TABLE t_class_a
    c_name VARCHAR2(255),
    one_class_a_for_ma2918_id VARCHAR2(32), /* untruncated name: one_class_a_for_many_class_a_id */
    object_id VARCHAR2(32) NOT NULL
    CREATE UNIQUE INDEX t_class_a_id_PK ON t_class_a ( object_id );
    ALTER TABLE t_class_a ADD ( CONSTRAINT t_class_a_id_PK PRIMARY KEY ( object_id ) USING INDEX );
    ALTER TABLE t_class_a ADD ( CONSTRAINT FK_0 FOREIGN KEY ( one_class_a_for_ma2918_id ) REFERENCES t_class_a ( object_id ) );
    ---------------------------ejb-jar.xml------------------
    <abstract-schema-name>ClassABean</abstract-schema-name>
    <cmp-field>
    <field-name>objectId</field-name></cmp-field>
    <cmp-field>
    <field-name>name</field-name></cmp-field>
    <primkey-field>objectId</primkey-field>
    <relationships>
    <ejb-relation>
    <ejb-relation-name>manyClassA_oneClassA</ejb-relation-name>
    <ejb-relationship-role>
    <description>optional</description>
    <ejb-relationship-role-name>OneClassA-in-manyClassA_oneClassA</ejb-relationship-role-name>
    <multiplicity>One</multiplicity>
    <relationship-role-source>
    <ejb-name>ClassAEJB</ejb-name></relationship-role-source>
    <cmr-field>
    <cmr-field-name>manyClassAsForOneClassA</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type></cmr-field></ejb-relationship-role>
    <ejb-relationship-role>
    <description>optional</description>
    <ejb-relationship-role-name>ManyClassA-in-manyClassA_oneClassA</ejb-relationship-role-name>
    <multiplicity>Many</multiplicity>
    <relationship-role-source>
    <ejb-name>ClassAEJB</ejb-name></relationship-role-source>
    <cmr-field>
    <cmr-field-name>oneClassAForManyClassA</cmr-field-name>
    </cmr-field>
    </ejb-relationship-role>
    </ejb-relation>
    </relationships>
    -----------sun-cmp-mapping.xml--------
    <sun-cmp-mapping>
    <schema>mySchema</schema>
    <entity-mapping>
    <ejb-name>ClassAEJB</ejb-name>
    <table-name>T_CLASS_A</table-name>
    <cmp-field-mapping>
    <field-name>objectId</field-name>
    <column-name>OBJECT_ID</column-name></cmp-field-mapping>
    <cmp-field-mapping>
    <field-name>name</field-name>
    <column-name>C_NAME</column-name></cmp-field-mapping>
    <cmr-field-mapping>
    <cmr-field-name>manyClassAsForOneClassA</cmr-field-name>
    <column-pair>
    <column-name>T_CLASS_A.OBJECT_ID</column-name>
    <column-name>T_CLASS_A.ONE_CLASS_A_FOR_MA2918_ID</column-name></column-pair></cmr-field-mapping></entity-mapping></sun-cmp-mapping></sun-cmp-mappings>
    I beleive the migration tool missing the cmr-filed mapping for the oneClassAForManyClassA relation role.
    but even if I add this mapping it still can't pass the verifiy.
    So do I miss any thing or I can conclude S1 not support this one-to many self relation?
    Any hint would be welcome.

    It does.
    There is a known problem with parsing self-referenced relationship info - the one side (with <multiplicity> Many) must be the first in the <ejb-relation> entry.
    Regards,
    Marina

  • EJB relation One to Many - ClassCastException

    Hi !
    I created two CMP EJB entity Client and Address. There is a One to Many relation between them.
    When I deploy them on JBoss, I have no errors, and the correponding tables are created in the database. The EJB seems to work fine, but when I use a 'relation' method : myAddress.setClient(myClient) for instance. I get a ServerException.
    In the log of JBoss there is :
    ClassCastException : org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.SetInstanceValue(...)
    I think I have a problem in my descriptors or JBoss configuration.
    If u have an idea ...
    Thx

    sorry to whack a load of code in but i can't see where the problem is here is my ejb-jar.xml file:
    <ejb-jar>
         <enterprise-beans>
              <entity>
                   <description>This bean represents a copy item.</description>
                   <ejb-name>CopyEJB</ejb-name>
                   <home>com.RemoteCopyHome</home>
                   <remote>com.RemoteCopy</remote>
                   <local-home>com.LocalCopyHome</local-home>
                   <local>com.LocalCopy</local>
                   <ejb-class>com.CopyBean</ejb-class>
                   <persistence-type>Container</persistence-type>
                   <prim-key-class>java.lang.String</prim-key-class>
                   <reentrant>False</reentrant>
                   <cmp-version>2.x</cmp-version>
                   <abstract-schema-name>Copy</abstract-schema-name>
                   <cmp-field>
                        <field-name>copyid</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>quality</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>buyinprice</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>selloutprice</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>bookid</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>title</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>genre</field-name>
                   </cmp-field>
                   <primkey-field>copyid</primkey-field>
                   <security-identity>
                        <description></description>
                        <use-caller-identity></use-caller-identity>
                   </security-identity>
              </entity>
              <entity>
                   <description>This bean represents a supplier.</description>
                   <ejb-name>SupplierEJB</ejb-name>
                   <home>com.RemoteSupplierHome</home>
                   <remote>com.RemoteSupplier</remote>
                   <local-home>com.LocalSupplierHome</local-home>
                   <local>com.LocalSupplier</local>
                   <ejb-class>com.SupplierBean</ejb-class>
                   <persistence-type>Container</persistence-type>
                   <prim-key-class>java.lang.String</prim-key-class>
                   <reentrant>False</reentrant>
                   <cmp-version>2.x</cmp-version>
                   <abstract-schema-name>Supplier</abstract-schema-name>
                   <cmp-field>
                        <field-name>supplierid</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>name</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>address1</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>address2</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>address3</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>address4</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>postcode</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>email</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>telno</field-name>
                   </cmp-field>
                   <primkey-field>supplierid</primkey-field>
                   <security-identity>
                        <description></description>
                        <use-caller-identity></use-caller-identity>
                   </security-identity>
              </entity>
              <entity>
                   <description>This bean represents an edition.</description>
                   <ejb-name>EditionEJB</ejb-name>
                   <home>com.RemoteEditionHome</home>
                   <remote>com.RemoteEdition</remote>
                   <local-home>com.LocalEditionHome</local-home>
                   <local>com.LocalEdition</local>
                   <ejb-class>com.EditionBean</ejb-class>
                   <persistence-type>Container</persistence-type>
                   <prim-key-class>java.lang.String</prim-key-class>
                   <reentrant>False</reentrant>
                   <cmp-version>2.x</cmp-version>
                   <abstract-schema-name>Edition</abstract-schema-name>
                   <cmp-field>
                        <field-name>editionid</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>isbn</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>publisher</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>binding</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>other</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>edition</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>printdate</field-name>
                   </cmp-field>
                   <primkey-field>editionid</primkey-field>
                   <security-identity>
                        <description></description>
                        <use-caller-identity></use-caller-identity>
                   </security-identity>
              </entity>
              <entity>
                   <description>This bean represents an author.</description>
                   <ejb-name>AuthorEJB</ejb-name>
                   <home>com.RemoteAuthorHome</home>
                   <remote>com.RemoteAuthor</remote>
                   <local-home>com.LocalAuthorHome</local-home>
                   <local>com.LocalAuthor</local>
                   <ejb-class>com.AuthorBean</ejb-class>
                   <persistence-type>Container</persistence-type>
                   <prim-key-class>java.lang.String</prim-key-class>
                   <reentrant>False</reentrant>
                   <cmp-version>2.x</cmp-version>
                   <abstract-schema-name>Author</abstract-schema-name>
                   <cmp-field>
                        <field-name>authorid</field-name>
                   </cmp-field>
                   <cmp-field>
                        <field-name>name</field-name>
                   </cmp-field>
                   <primkey-field>authorid</primkey-field>
                   <security-identity>
                        <description></description>
                        <use-caller-identity></use-caller-identity>
                   </security-identity>
              </entity>
              <session>
                   <description>Supplier Function Session Bean</description>
                   <display-name>SupplierFunctionEJB</display-name>
                   <ejb-name>SupplierFunctionEJB</ejb-name>
                   <home>com.SupplierFunctionHome</home>
                   <remote>com.SupplierFunctionRemote</remote>
                   <ejb-class>com.SupplierFunctionSBean</ejb-class>
                   <session-type>Stateless</session-type>
                   <transaction-type>Container</transaction-type>
              </session>
              <session>
                   <description>Copy Function Session Bean</description>
                   <display-name>CopyFunctionEJB</display-name>
                   <ejb-name>CopyFunctionEJB</ejb-name>
                   <home>com.CopyFunctionHome</home>
                   <remote>com.CopyFunctionRemote</remote>
                   <ejb-class>com.CopyFunctionSBean</ejb-class>
                   <session-type>Stateless</session-type>
                   <transaction-type>Container</transaction-type>
              </session>
         </enterprise-beans>
         <relationships>
              <ejb-relation>
                   <ejb-relation-name>Supplier-Copy</ejb-relation-name>
                   <ejb-relationship-role>
                        <ejb-relationship-role-name>copy-recievedfrom-supplier</ejb-relationship-role-name>
                        <multiplicity>Many</multiplicity>
                        <cascade-delete></cascade-delete>
                        <relationship-role-source>
                             <ejb-name>CopyEJB</ejb-name>
                        </relationship-role-source>
                        <cmr-field>
                             <cmr-field-name>supplier</cmr-field-name>
                        </cmr-field>
                   </ejb-relationship-role>
                   <ejb-relationship-role>
                        <ejb-relationship-role-name>supplier-has-items</ejb-relationship-role-name>
                        <multiplicity>One</multiplicity>
                        <relationship-role-source>
                             <ejb-name>SupplierEJB</ejb-name>
                        </relationship-role-source>
                   </ejb-relationship-role>
              </ejb-relation>
              <ejb-relation>
                   <ejb-relation-name>Edition-Copy</ejb-relation-name>
                   <ejb-relationship-role>
                        <ejb-relationship-role-name>edition-has-items</ejb-relationship-role-name>
                        <multiplicity>One</multiplicity>
                        <relationship-role-source>
                             <ejb-name>EditionEJB</ejb-name>
                        </relationship-role-source>
                   </ejb-relationship-role>
                   <ejb-relationship-role>
                        <ejb-relationship-role-name>copy-is-a-edition</ejb-relationship-role-name>
                        <multiplicity>Many</multiplicity>
                        <cascade-delete></cascade-delete>
                        <relationship-role-source>
                             <ejb-name>CopyEJB</ejb-name>
                        </relationship-role-source>
                        <cmr-field>
                             <cmr-field-name>edition</cmr-field-name>
                        </cmr-field>
                   </ejb-relationship-role>
              </ejb-relation>
              <!--<ejb-relation>
                   <ejb-relation-name>Author-Copy</ejb-relation-name>
                   <ejb-relationship-role>
                        <ejb-relationship-role-name>copy-has-items</ejb-relationship-role-name>
                        <multiplicity>Many</multiplicity>                                     
        <relationship-role-source>
                             <ejb-name>AuthorEJB</ejb-name>
                        </relationship-role-source>
                        <cmr-field>
                             <cmr-field-name>copies</cmr-field-name>
                             <cmr-field-type>java.util.Set</cmr-field-type>
                        </cmr-field>
                   </ejb-relationship-role>
                   <ejb-relationship-role>
                        <ejb-relationship-role-name>copy-has-authors</ejb-relationship-role-name>
                        <multiplicity>Many</multiplicity>
                        <cascade-delete></cascade-delete>
                        <relationship-role-source>
                             <ejb-name>CopyEJB</ejb-name>
                        </relationship-role-source>
                        <cmr-field>
                             <cmr-field-name>authors</cmr-field-name>
                     <cmr-field-type>java.util.Set</cmr-field-type>     
                        </cmr-field>
                   </ejb-relationship-role>
              </ejb-relation>-->
         </relationships>
         <assembly-descriptor>
              <security-role>
                   <description>This role represents everyone who is allowed full access
             to the beans.</description>
                   <role-name>Subscribers</role-name>
              </security-role>
              <method-permission>
                   <role-name>Subscribers</role-name>
                   <method>
                        <ejb-name>CopyEJB</ejb-name>
                        <method-name>*</method-name>
                   </method>
                   <method>
                        <ejb-name>SupplierEJB</ejb-name>
                        <method-name>*</method-name>
                   </method>
              </method-permission>
              <container-transaction>
                   <method>
                        <ejb-name>CopyEJB</ejb-name>
                        <method-name>*</method-name>
                   </method>
                   <method>
                        <ejb-name>SupplierEJB</ejb-name>
                        <method-name>*</method-name>
                   </method>
                   <trans-attribute>Required</trans-attribute>
              </container-transaction>
         </assembly-descriptor>
    </ejb-jar>my session bean code can be found at
    http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=11&t=006578

  • One-to-Many CMR problem

    I am trying to get Container Managed Relationships working with Oracle Application Server. I am sure that the problem it quite obvious to anyone who has got this working before, but after carefully following numerous examples, I still cant get them to work. I have various issues including the application server blocking when it calls the getB() method in "A" to populate the items from table "B", even though the generated SQL looks okay e.g., "select B_PK from B where (b_fk = 1)".
    I would be extremely grateful if you could point out my (hopefully obvious) mistake as I wrestled with it for the past couple of weeks.
    Any ideas?
    Cheers,
    Jonathan
    I have two tables A and B; A has a one-to-many relationship with B:
    Table A:
         A_PK          (primary key)
         A_NAME
    Table B:
         B_PK          (primary key)
         B_NAME
         B_FK          (foreign key to table A)
    My ejb-jar.xml file is:
    <ejb-jar>
    <enterprise-beans>
    <entity>
    <description>Entity Bean ( CMP )</description>
    <display-name>A</display-name>
    <ejb-name>A</ejb-name>
    <home>mypackage1.AHome</home>
    <remote>mypackage1.A</remote>
    <local-home>mypackage1.ALocalHome</local-home>
    <local>mypackage1.ALocal</local>
    <ejb-class>mypackage1.impl.ABean</ejb-class>
    <persistence-type>Container</persistence-type>
    <prim-key-class>java.lang.Long</prim-key-class>
    <reentrant>False</reentrant>
    <cmp-version>2.x</cmp-version>
    <abstract-schema-name>A</abstract-schema-name>
    <cmp-field><field-name>a_pk</field-name></cmp-field>
    <cmp-field><field-name>a_name</field-name></cmp-field>
    <primkey-field>a_pk</primkey-field>
    </entity>
    <entity>
    <description>Entity Bean ( CMP )</description>
    <display-name>B</display-name>
    <ejb-name>B</ejb-name>
    <home>mypackage1.BHome</home>
    <remote>mypackage1.B</remote>
    <local-home>mypackage1.BLocalHome</local-home>
    <local>mypackage1.BLocal</local>
    <ejb-class>mypackage1.impl.BBean</ejb-class>
    <persistence-type>Container</persistence-type>
    <prim-key-class>java.lang.Long</prim-key-class>
    <reentrant>False</reentrant>
    <cmp-version>2.x</cmp-version>
    <abstract-schema-name>B</abstract-schema-name>
    <cmp-field><field-name>b_pk</field-name></cmp-field>
    <cmp-field><field-name>b_name</field-name></cmp-field>
    <cmp-field><field-name>b_fk</field-name></cmp-field>
    <primkey-field>b_pk</primkey-field>
    </entity>
    </enterprise-beans>
    <relationships>
    <ejb-relation>
    <ejb-relation-name>A-B</ejb-relation-name>
    <ejb-relationship-role>
    <multiplicity>One</multiplicity>
    <cascade-delete/>
    <relationship-role-source>
    <ejb-name>A</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>b</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
    <multiplicity>Many</multiplicity>
    <relationship-role-source>
    <ejb-name>B</ejb-name>
    </relationship-role-source>
    </ejb-relationship-role>
    </ejb-relation>
    </relationships>
    </ejb-jar>
    And my orion-ejb-jar.xml file is:
    <?xml version = '1.0' encoding = 'windows-1252'?>
    <!DOCTYPE orion-ejb-jar PUBLIC "-//Evermind//DTD Enterprise JavaBeans 1.1 runtime//EN" "http://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd">
    <orion-ejb-jar>
    <enterprise-beans>
    <entity-deployment name="A" copy-by-value="false" data-source="jdbc/Connection1DS" exclusive-write-access="false" table="a">
    <primkey-mapping>
    <cmp-field-mapping name="a_pk" persistence-name="a_pk"
    persistence-type="int(11)"/>
    </primkey-mapping>
    <cmp-field-mapping name="a_pk" persistence-name="a_pk"
    persistence-type="int(11)"/>
    <cmp-field-mapping name="a_name" persistence-name="a_name"
    persistence-type="varchar(100)"/>
    <cmp-field-mapping name="b">
    <collection-mapping table="B">
    <primkey-mapping>
    <cmp-field-mapping name="b_fk" persistence-name="B_FK"/>
    </primkey-mapping>
    <value-mapping type="mypackage1.BLocal">
    <cmp-field-mapping>
    <entity-ref home="B">
    <cmp-field-mapping name="b_pk" persistence-name="B_PK"/>
    </entity-ref>
    </cmp-field-mapping>
    </value-mapping>
    </collection-mapping>
    </cmp-field-mapping>
    </entity-deployment>
    <entity-deployment name="B" copy-by-value="false" data-source="jdbc/Connection1DS" exclusive-write-access="false" table="b">
    <primkey-mapping>
    <cmp-field-mapping name="b_pk" persistence-name="b_pk"
    persistence-type="int(11)"/>
    </primkey-mapping>
    <cmp-field-mapping name="b_pk"
    persistence-name="b_pk" persistence-type="int(11)"/>
    <cmp-field-mapping name="b_fk" persistence-name="b_fk"
    persistence-type="int(11)"/>
    </entity-deployment>
    </enterprise-beans>
    <assembly-descriptor>
    <default-method-access>
    <security-role-mapping impliesAll="true" name="&lt;default-ejb-caller-role>"/>
    </default-method-access>
    </assembly-descriptor>
    </orion-ejb-jar>

    Ok, I found out something strange. If I do the addPet operation twice in the client the new relationship is created, too.
    p = home.create("Violetta");
    p.addNewPet("Jenny");
    p = home.create("Frank");
    p.addPet("Jenny");
    p.addPet("Jenny");
    May this be a timing problem? Or is there a command I could execute to ensure all data manipulation is populated to the DB. (Like close() in JDBC)
    TIA
    Frank

  • How to insert data in a one-to-many relationship

    How do you insert data into the client, my model entity beans have a one-to-many relationship.
    PARENT ENTITY BEAN
    PARENT-ID
    PARENT-NAME
    The ejbCreate(Integer parentID,String name)
    CHILD ENTITY BEAN
    CHILD-ID
    CHILD-NAME
    PARENT-ID(foreign key of PARENTID).
    ejbCreate(Integer parentID,String name,String foreignparentID)
    In a jsp page i collect the parent details and 3 corresponding chld details in a text box.
    Can you please tell me how do i proceed from here...
    ie. how to i insert data into the entity beans..
    Do i pass the child as a collection, and within parents ejbCreate() method do i lookup for the childs home interface and insert one -by -one from the collection.
    1. Considering the above example, can some one pls tell how the ejbCreate() mehod signatures, for the parent and child entity beans should be.
    2. Pls also show some sample client code as to how to make an insertion.
    3. In case you are passing a collection of child data, then in what format does one have to insert into a collection and also how does the container know how to insert the values in the child table , bcoz we are passing as a collection.
    4.In case collections cannot be inserted do we need to iterate into the collection in parent's ejbCreate() method, and manually insert into the database of the childtable, thereby creating child entity beans.
    Thanks for your time and support...
    regards
    kartik

    Hi,
    3. In this case of course child's ejbCreate(and postCreate) looks like
    ejbCreate(Integer childID,String name,ParentLocal parent) {
    setId(Id);
    setName(name);
    ejbPostCreate(Integer childID,String name,ParentLocal parent) {
    setParent(parent);
    Here you don't need IDs, but it happens only using Locals, not Remotes, if I'm not wrong. Container does it itself.
    1. Of course, if you have parent.getChildren() and parent.setChildren() then you don't need any loops, but it should be done anyway in postCreate, because in ejbCreate there no parent exists yet.
    Once more 3: example - I'm using JBoss 3.2.5 as EJB container. It has tomcat inside and EJB and JSP+Struts use the same jvm. It means for me that I don't need to use remote interfaces, just locals. And in this case I can implement ejb-relations. So, a have the abstract method parent.getChildren() which returns Collection of ChildLocal - s and method parent.setChildren(Collection childrenLocals) which creates/modifies children by itself.
    I have not used remotes for a long time, but as I remember it was not possible to implement ejb-relations using remotes.
    regards,
    Gio

  • Error while deploying CMP Bean

    hi all,
    i'm very new in J2EE Technology .I was trying one of the sample application available in sun one examples and sample applicationsm site.
    I have registered a datasource called hari
    in my server instance
    when im deploying the J2EE Application which contains a CMP Bean, when i deploy in the final stage i'm getting an error
    "javax.naming.InvalidNameException:
    error loading c:\j2sdkee1.3.1\repository\c3018a\applications\CMPApp1046345051707Server.jar;nested exception is:
    javax.naming.InvalidNameException:
    Real JNDI name cannot be empty for hari
    can anyone help me to fix this problem ,where exactly i have to mention the real name for this DataSource

    Sounds like there is a resource-ref in your application that
    has not been mapped to a physical datasource in the
    sun-j2ee-ri.xml file.
    e.g. :
    <resource-ref>
    <res-ref-name>jdbc/AccountDB</res-ref-name>
    <jndi-name>jdbc/XACloudscape</jndi-name>
    <default-resource-principal>
    <name>scott</name>
    <password>tiger</password>
    </default-resource-principal>
    </resource-ref>
    See the J2EE Tutorial for additional examples.
    --ken

  • Error in deploying a cmp bean in j2ee 1.3

    Hi,
    I am deploying a cmr application using 3 cmp entity beans. while deloyment i get a error for one of the entity bean, studentEJB. the error is :
    For [ StudentEJB ]
    Error: There are no method permissions within this bean [ StudentEJB ]. Transaction attributes must be specified for the methods defined in the remote interface [ LocalStudent ]. Method [ getLastName ] has no transaction attribute defined.
    my LocalStudent file is:
    import javax.ejb.*;
    import java.util.*;
    public interface LocalStudent extends EJBLocalObject
    public String getStudentID();
    public String getFirstName();
    public String getLastName();
    public ArrayList getAddressList();
    public ArrayList getRosterList();
    public void addAddress(LocalAddress address);
    public void addRoster(LocalRoster roster);
    while no errors are coming for the studentID and firstName fields why is the error coming for lastName field ?
    three fields, studentID, firstName and lastName contain similar implementations in the LocalStudent and studentEJB class.
    wiating for an early response...
    Tanmoy

    Hello there!
    I am having a similar problem here also. I am trying to build a lab for test the J2EE tecnology in order for the company I work for switch our Cash Dispenser system to java.
    I have made a very simple entity EJB witch local interface is:
    public interface LabLocal extends EJBLocalObject
    String getExperiment();
    String getDescription();
    void setDescription(String description);
    String getResult();
    void setResult(String result);
    Local home is:
    public interface LabLocalHome extends EJBLocalHome
         LabLocal create( String experiment, String description, String result ) throws CreateException;
         LabLocal findByPrimaryKey( LabPK key ) throws FinderException;
         void remove();
    and the bean itself is:
    public class LabBean implements EntityBean
    private EntityContext ctx;
    private DataSource dataSource;
    public String experiment;
    public String description;
    public String result;
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#ejbActivate()
    public void ejbActivate() throws EJBException, RemoteException
    // nothing to do here people.
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#ejbLoad()
    public void ejbLoad() throws EJBException, RemoteException
    LabPK key = (LabPK)ctx.getPrimaryKey();
    Connection con = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try
    con = dataSource.getConnection();
    stmt = con.prepareStatement("SELECT description, result FROM laboratory WHERE experiment = ?");
    stmt.setString(1, key.experiment);
    rs = stmt.executeQuery();
    if( ! rs.next() )
    error( "no data found in ejbLoad for " + key, null);
    this.experiment = key.experiment;
    catch( SQLException se)
    error("Error in ejbLoad" + key, se);
    finally
    closeConnection(con, stmt, rs);
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#ejbPassivate()
    public void ejbPassivate() throws EJBException, RemoteException
    this.description = null;
    this.result = null;
    this.experiment = null;
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#ejbRemove()
    public void ejbRemove() throws RemoveException, EJBException, RemoteException
         LabPK key = (LabPK) ctx.getPrimaryKey();
         Connection con = null;
         PreparedStatement stmt = null;
         try
              con = dataSource.getConnection();
              stmt = con.prepareStatement("DELETE FROM laboratory WHERE experiment = ? ");
              stmt.setString(1, key.toString() );
              stmt.executeUpdate();
         catch( SQLException se )
              error( "Error deleting " + key, se );
         finally
              closeConnection(con, stmt, null);
         this.experiment = null;
         this.description = null;
         this.result = null;
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#ejbStore()
    public void ejbStore() throws EJBException, RemoteException
    Connection con = null;
    PreparedStatement stmt = null;
    try
    con = dataSource.getConnection();
    stmt = con.prepareStatement("UPDATE Laboratory SET description = ? , result = ? WHERE experiment = ? ");
    stmt.setString(1, this.description);
    stmt.setString(2, this.result);
    stmt.setString(3, this.experiment);
    stmt.executeUpdate();
    catch( SQLException se)
    error( "Error processing UPDATE statement.", se);
    finally
    closeConnection(con, stmt, null);
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#unsetEntityContext()
    public void unsetEntityContext() throws EJBException, RemoteException
    this.ctx = null;
    this.dataSource = null;
    /* (non-Javadoc)
    * @see javax.ejb.EntityBean#setEntityContext(javax.ejb.EntityContext)
    public void setEntityContext(EntityContext arg0) throws EJBException, RemoteException
    this.ctx = arg0;
    InitialContext ic = null;
    try
    ic = new InitialContext();
    dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/teste");
    catch( NamingException ne)
    error( "error looking up depend EJB or resource. ", ne);
    public void error( String message, Exception e)
    throw new EJBException( message, e);
    public void closeConnection( Connection con, PreparedStatement stmt, ResultSet rs )
    try
         if( stmt != null )
         stmt.close();
    catch( SQLException se)
    System.out.println( "Data base error: " + se.toString() );
    try
         if( con != null)
         con.close();
    catch( SQLException se)
    System.out.println( "Data base error: " + se.toString() );
    public LabPK ejbCreate( String experiment, String description, String result ) throws CreateException
    LabPK key = new LabPK( experiment );
    try
    ejbFindByPrimaryKey( key );
    throw new CreateException( "Duplicate lab: " + key);
    catch( FinderException fe ){}
    Connection con = null;
    PreparedStatement stmt = null;
    try
    con = dataSource.getConnection();
    stmt = con.prepareStatement("INSERT INTO laboratory ( experiment, description, result ) VALUES (?, ?, ?) ");
    stmt.setString(1, experiment);
    stmt.setString(2, description);
    stmt.setString(3, result);
    catch( SQLException se )
    error( "Error creating lab: " + key, se);
    finally
    closeConnection(con, stmt, null);
    this.experiment = experiment;
    this.description = description;
    this.result = result;
    return key;
    public void ejbPostCreate(String experiment, String description, String result){}
    public LabPK ejbFindByPrimaryKey( LabPK key ) throws FinderException
         Connection con = null;
         PreparedStatement stmt = null;
         ResultSet rs = null;
         try
              con = dataSource.getConnection();
              stmt = con.prepareStatement("SELECT experiment FROM laboratory WHERE experiment = ?");
              stmt.setString(1, key.experiment );
              rs = stmt.executeQuery();
              if( !rs.next() )
                   throw new FinderException( "Unknown key: " + key );
              return key;
         catch( SQLException se )
              error( "Error in finding primary key for " + key, se );
         finally
         closeConnection(con, stmt, rs);
         return null;
    public String getExperiment()
    return this.experiment;
    public String getDescription()
    return this.description;
    public void setDescription(String description)
    this.description = description;
    public String getResult()
    return this.result;
    public void setResult(String result)
    this.result = result;
    I will omit the PK code in order to not create a longer than necessary post.
    I am using the deploytool�s Graphical interface to generate a standalone jar file. When I run the verify tool I get the following errors:
    For [ D:-Linux-Java-LabJar.jar#LabJar.jar#LabBean ]
    Error: There are no method permissions within this bean [ LabBean ]. Transaction attributes must be specified for the methods defined in the remote interface [ simpleEJB.LabLocal ]. Method [ getDescription ] has no transaction attribute defined.
    For [ D:-Linux-Java-LabJar.jar#LabJar.jar#LabBean ]
    Error: There are no method permissions within this bean [ LabBean ]. Transaction attributes must be specified for the methods defined in the remote interface [ simpleEJB.LabLocal ]. Method [ setDescription ] has no transaction attribute defined.
    For [ D:-Linux-Java-LabJar.jar#LabJar.jar#LabBean ]
    Error: There are no method permissions within this bean [ LabBean ]. Transaction attributes must be specified for the methods defined in the remote interface [ simpleEJB.LabLocal ]. Method [ getResult ] has no transaction attribute defined.
    For [ D:-Linux-Java-LabJar.jar#LabJar.jar#LabBean ]
    Error: There are no method permissions within this bean [ LabBean ]. Transaction attributes must be specified for the methods defined in the remote interface [ simpleEJB.LabLocal ]. Method [ getExperiment ] has no transaction attribute defined.
    For [ D:-Linux-Java-LabJar.jar#LabJar.jar#LabBean ]
    Error: There are no method permissions within this bean [ LabBean ]. Transaction attributes must be specified for the methods defined in the remote interface [ simpleEJB.LabLocal ]. Method [ setResult ] has no transaction attribute defined.
    I�ve read the forum in search for an good answer and found some sugestions to look in the security and transaction tab in order to force the tool to generate the entries for the methods. It did not helped at all.
    I tried to change the defaults in transaction tab from "required" to "mandatory". When I save, the tool presents the root screen of the jar file, but when I go check the values of the transaction atributes, they are again set to "required" .
    In the descriptor viewer for the application descriptor it shows:
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 EJB 2.1//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-ejb-jar_2_1-0.dtd"> <sun-ejb-jar> <enterprise-beans> <name>LabJar</name> <unique-id>366779567</unique-id> <ejb> <ejb-name>LabBean</ejb-name> <jndi-name>LabBean</jndi-name> </ejb> </enterprise-beans> </sun-ejb-jar>
    I cant get to edit it when I try.
    I am using the "Deployment Tool for Java 2 Plataform Enterprise Edition 1.4" from the J2EE SDK 1.4_2 running on Windows 2000 SP4.
    Tks in advance,
    Leonardo.
    P.S.: Ok. Isnt it silly. I wrote all that, and then choose "supported" instead of mandatory, saved and verified that it saved the setting indeed. returned to required and runned the test. It worked.

  • ORA-01722: invalid number when updating a CMP bean, SP10 WebLogic_RDBMS.jar problem?

    Hi guys
    We are having a problem with the migration to WLCS 3.2 SP2 / WLS 5.1 SP10.
    We are moving from WLCS 3.2 and WLS SP6. Our CMP beans generate errors when
    the container tries to update them. They deploy without error though.
    See below for the stack trace
    We use the recommended weblogic driver for our Oracle 8.1.7.0 database. WL
    runs on w2k, and Oracle on Solaris 7.
    Extract from set-environment:
    SET DB_CLASSPATH=
    SET PATH=%PATH%;%WEBLOGIC_HOME%\bin\oci815_8;%WLCS_ORACLE_HOME%\bin
    SET
    SQLPATH=C:\WebLogicCommerceServer3.2\db\oracle816;C:\WebLogicCommerceServer3
    .2\db\oracle816\event;
    Extract from weblogic.properties:
    weblogic.jdbc.connectionPool.commercePool=\
    url=jdbc:weblogic:oracle,\
    driver=weblogic.jdbc.oci.Driver,\
    I made a few experiments, and I noticed that generating the CMP classes
    (with EJBC) with the old WebLogic_RDBMS.jar (from WLS SP6) is working fine.
    Here is what I mean : ejbc uses the library
    c:\weblogic\lib\persistence\WebLogic_RDBMS.jar And this library has changed
    with SP10. However since that change and after rebuilding our jars, all CMP
    entity beans fail to update.
    If I just replace that WebLogic_RDBMS.jar with the previous one (from SP6),
    and without changing anything else, our CMP beans work fine. I did not
    change any driver or xml deployment descriptor.
    One of the generated files in the jar (for our bean
    VisibilityPSWebLogic_CMP_RDBMS.class) differs, and that seems to be the
    cause of the problem.
    I jadded that class and here is a difference I notice:
    OLD, ejbc ran with SP6 WebLogic_RDBMS.jar : visibilitybean.targetCompanyId =
    (BigDecimal)resultset.getObject(5);
    NEW, ejbc ran with SP10 WebLogic_RDBMS.jar : visibilitybean.targetCompanyId
    = resultset.getBigDecimal(5, 35);
    Similar differences for the SETbigdecimal.
    Dunno if that will help, but I'm attaching the 2 jar files with explicit
    names.
    Damn that was long, I hope someone will read it... Thanks for any help on
    this, see stack trace attached below
    Nicolas Lejeune
    Stack trace:
    mer. oct. 03 12:16:22 CEST 2001:<I> <EJB JAR deployment
    C:/WebLogicCommerceServer3.2/lib/foundation.jar> Exception in
    non-transactional EJB invoke:
    java.rmi.UnexpectedException: Unexpected exception in
    com.b2boost.visibility.VisibilityBean.getVisibilityId():
    java.sql.SQLException: ORA-01722: invalid number
    at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:230)
    at weblogic.jdbcbase.oci.Statement.executeUpdate(Statement.java:980)
    at
    weblogic.jdbc20.pool.PreparedStatement.executeUpdate(PreparedStatement.java:
    47)
    at
    com.b2boost.visibility.VisibilityPSWebLogic_CMP_RDBMS.update(VisibilityPSWeb
    Logic_CMP_RDBMS.java:446)
    at
    com.b2boost.visibility.VisibilityPSWebLogic_CMP_RDBMS.store(VisibilityPSWebL
    ogic_CMP_RDBMS.java:376)
    at
    weblogic.ejb.internal.EntityEJBContext.store(EntityEJBContext.java:192)
    at
    weblogic.ejb.internal.EntityEJBContext.beforeCompletion(EntityEJBContext.jav
    a:227)
    at
    weblogic.ejb.internal.StatefulEJBObject.postInvokeNoTx(StatefulEJBObject.jav
    a:355)
    at
    weblogic.ejb.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:865)
    at
    com.b2boost.visibility.VisibilityBeanEOImpl.getVisibilityId(VisibilityBeanEO
    Impl.java:198)
    at
    com.b2boost.visibility.pipeline.LoadFirstVisibilityRequestPC.process(LoadFir
    stVisibilityRequestPC.java:83)
    at
    com.beasys.commerce.foundation.pipeline.PipelineExecutorImpl.process(Pipelin
    eExecutorImpl.java:193)
    at
    com.beasys.commerce.foundation.pipeline.PipelineExecutorImplEOImpl.process(P
    ipelineExecutorImplEOImpl.java:56)
    at
    com.beasys.commerce.foundation.pipeline.PipelineExecutorImplEOImpl_ServiceSt
    ub.process(PipelineExecutorImplEOImpl_ServiceStub.java:154)
    at
    com.beasys.commerce.webflow.PipelineProcessor.callPipeline(PipelineProcessor
    .java:170)
    at
    com.beasys.commerce.webflow.PipelineProcessor.process(PipelineProcessor.java
    :102)
    at
    com.beasys.commerce.webflow.WebflowAdvisor.handleTarget(WebflowAdvisor.java:
    409)
    at
    com.beasys.commerce.webflow.WebflowAdvisor.processTarget(WebflowAdvisor.java
    :156)
    at
    com.b2boost.framework.B2boostPortalDestinationDeterminer.determineDestinatio
    n(B2boostPortalDestinationDeterminer.java:208)
    at
    com.beasys.commerce.foundation.flow.FlowManager.service(FlowManager.java:438
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
    :120)
    at
    weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
    l.java:922)
    at
    weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
    l.java:886)
    at
    weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
    Manager.java:269)
    at
    weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:392)
    at
    weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:274)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:129)
    [Visibility_generated_with_SP6_weblogic_rdbms_jar.jar]
    [Visibility_generated_with_SP10_weblogic_rdbms_jar.jar]

    You are using WebLogic jDriver for Oracle which needs exact version of OCI API, that comes with the Oracle client installation. Ensure that you have installed the right Oracle client version. And updated the PATH properly.
    I notice that you have
    bin/oci815_8
    oracle816
    Thsi looks liek the inconsistency in your environment.
    What you need to do is
    1. find oci817_8 and place that in the PATH.
    2. install oracle 817 and use that client and set the ORACLE_HOME environment variable and the PATH properly.
    Try this and see if it helps.
    BTW - WLS 5.1 is EOL

  • How to implement sql query in cmp bean?

    let's say that i want to join two tables and use grouping, counting and sorting expresion. it is no problem with sql query but what about cmp bean?
    of course i can make one bmp bean or session bean and run directly sql expresion, but then what is the point of using cmp beans?
    thanks
    winnicki

    If yout need post-query for filling descriptive colums (eg. department name in emploees) you should build a view object which includes the descriptive colums by joining the relevent tables

Maybe you are looking for