Hi Tim...

No, I didn't mean in the relationship tag. Sorry for the confusion. My 
fault entirely. I meant in the <entity> tag.

The descriptor I pasted below is an example of one which fails to deploy on 
Orion 1.4.0 because of a now fixed Orion bug (I have not yet retested but 
Bugzilla says its fixed in 1.4.4). However, if you exampne the part that 
defines the entity beans you'll see what I mean. There is a comment you 
can't miss.

Let us know if it works and if not we'll look at other things.

Jim


<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise 
JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd">
<ejb-jar>
        <description>Test Sample EJB 2.0 EB</description>
        <display-name>Person</display-name>
        <enterprise-beans>
                <entity>
                  <cmp-version>2.0</cmp-version>
                        <description>Person</description>
                        <display-name>Test20CmpDoOM.eb.Person</display-name>
                        <ejb-name>Test20CmpDoOM.eb.PersonEJB</ejb-name>
                        <home>Test20CmpDoOM.eb.PersonHome</home>
                        <remote>Test20CmpDoOM.eb.Person</remote>
                        <ejb-class>Test20CmpDoOM.eb.PersonEJB</ejb-class>
                        <persistence-type>Container</persistence-type>
                        <prim-key-class>java.lang.String</prim-key-class>
                        <reentrant>True</reentrant>

                        <!-- These lines should not be required (according to the 
spec) -->
                        <!-- but without them deployment fails -->
                        <cmp-field><field-name>addrDo</field-name></cmp-field>
                        <cmp-field><field-name>emailDos</field-name></cmp-field>
                        
                        <cmp-field><field-name>userId</field-name></cmp-field>
                        <cmp-field><field-name>firstName</field-name></cmp-field>
                        <cmp-field><field-name>lastName</field-name></cmp-field>

                        <primkey-field>userId</primkey-field>
                </entity>
        </enterprise-beans>

  <dependents>
                <dependent>
                        <dependent-name>addrDo</dependent-name>
                        <dependent-class>Test20CmpDoOM.eb.AddrDo</dependent-class>
                        <cmp-field><field-name>street</field-name></cmp-field>
                        <cmp-field><field-name>city</field-name></cmp-field>
                        <cmp-field><field-name>state</field-name></cmp-field>
                        <cmp-field><field-name>zip</field-name></cmp-field>
                </dependent>
                <dependent>
                        <dependent-name>emailDo</dependent-name>
                        <dependent-class>Test20CmpDoOM.eb.EmailDo</dependent-class>
                        <cmp-field><field-name>email</field-name></cmp-field>
                        <cmp-field><field-name>person</field-name></cmp-field>
                </dependent>
        </dependents>

        <relationships>
                <ejb-relation>
                        <ejb-relation-name>Person-Address</ejb-relation-name>
                        <ejb-relationship-role>
 
        <ejb-relationship-role-name>Person-has-Address</ejb-relationship-role-name>
                                <multiplicity>one</multiplicity>
                                
<role-source><ejb-name>Test20CmpDoOM.eb.Person</ejb-name></role-source>
                                <cmr-field>
                                        <cmr-field-name>addrDo</cmr-field-name>
                                        
<cmr-field-type>Test20CmpDoOM.eb.AddrDo</cmr-field-type>
                                </cmr-field>
                        </ejb-relationship-role>
                        <ejb-relationship-role>
 
        <ejb-relationship-role-name>Address-belongsto-User</ejb-relationship-role-
name>
                                <multiplicity>one</multiplicity>
                                
<role-source><dependent-name>addrDo</dependent-name></role-source>
                        </ejb-relationship-role>
                </ejb-relation>
                
                <ejb-relation>
                        <ejb-relation-name>Person-Email</ejb-relation-name>
                        <ejb-relationship-role>
 
        <ejb-relationship-role-name>Person-has-Email</ejb-relationship-role-name>
                                <multiplicity>one</multiplicity>
 
        <role-source><ejb-name>Test20CmpDoOM.eb.PersonEJB</ejb-name></role-source>
                                <cmr-field>
                                        <cmr-field-name>emailDos</cmr-field-name>
                                        
<cmr-field-type>java.util.Collection</cmr-field-type>
                                </cmr-field>
                        </ejb-relationship-role>
                        <ejb-relationship-role>
 
        <ejb-relationship-role-name>Email-belongsto-User</ejb-relationship-role-na
me>
                                <multiplicity>many</multiplicity>
                                
<role-source><dependent-name>emailDo</dependent-name></role-source>
                                <!-- -->
                                <cmr-field>
                                        <cmr-field-name>person</cmr-field-name>
                                        
<cmr-field-type>Test20CmpDoOM.eb.Person</cmr-field-type>
                                </cmr-field>
                                <!-- -->
                        </ejb-relationship-role>
                </ejb-relation>
        </relationships>

   <assembly-descriptor>
      <security-role>
         <description>Users</description>
         <role-name>users</role-name>
      </security-role>
   </assembly-descriptor>
</ejb-jar>


--On Friday, November 10, 2000 2:19 PM -0500 Tim Drury 
<[EMAIL PROTECTED]> wrote:

>
> Jim,
>
> Thanks for the quick response.  I'm using 1.4 and I've
> gotten 1:1 to work.  I think my problem may be what
> you mentioned about a non-standard CMR field in
> ejb-jar.xml.  What are you talking about exactly?
> In the <relationship> tag?  Here is my relationship
> area again:
>
> <ejb-relation>
>   <ejb-relation-name>EdiFile-EdiEnvelopes</ejb-relation-name>
>   <ejb-relationship-role>
>
> <ejb-relationship-role-name>EdiFile-has-EdiEnvelopes</ejb-relationship-ro
> le- name>
>     <multiplicity>one</multiplicity>
>     <role-source>
>       <ejb-name>EdiFileEJB</ejb-name>
>     </role-source>
>     <cmr-field>
>       <cmr-field-name>envelopes</cmr-field-name>
>       <cmr-field-type>java.util.Collection</cmr-field-type>
>     </cmr-field>
>   </ejb-relationship-role>
>
>   <ejb-relationship-role>
>
> <ejb-relationship-role-name>EdiEnvelopes-belongsto-EdiFile</ejb-relations
> hip -role-name>
>     <multiplicity>many</multiplicity>
>     <role-source>
>       <dependent-name>EdiEnvelope</dependent-name>
>     </role-source>
>     <cmr-field>
>        <cmr-field-name>ediFile</cmr-field-name>
>        </cmr-field>
>   </ejb-relationship-role>
> </ejb-relation>
>
>
>> -----Original Message-----
>> From: Jim Archer [mailto:[EMAIL PROTECTED]]
>> Sent: Friday, November 10, 2000 1:14 PM
>> To: Orion-Interest
>> Cc: Tim Drury
>> Subject: Re: ejb2: EJB->DO, 1 to many problem
>>
>>
>> Hi Tim...
>>
>> I'll take a stab at trying to help with this. I have done a
>> lot of work
>> with dependent objects.
>>
>> First, using Orion 1.4.0 I found that unidirectional
>> dependents work as
>> they should (when an EB has dependents). If you have an EB
>> with dependents
>> in a 1-to-1 relationship, Orion will create one table and map
>> the fields of
>> the dependent into the table for the EB. If you have a 1-ri-n
>> relationship,
>> Orion will create two tables.
>>
>> I have found that Orion 1.4.0 does work with dependents in a
>> unidirectional
>> relationship properly. The error your reporting seems to indicate a
>> descriptor error. Remember that Orion 1.4.0 has a bug in
>> which you must
>> define the CMR field also as a CMP field (in violation of all
>> EJB 2.0 spec
>> revisions).
>>
>> I have also found that Orion 1.4.0 fasils to work properly with
>> bidirectional dependent relationships. According to Bugzilla,
>> this has been
>> fixed in Orion 1.4.4 but I have not attempted to test this yet.
>>
>> If you can tell us what version of Orion your using and post
>> the relevant
>> portion of your descriptor we can probably offer better assistence.
>>
>> Jim
>>
>>
>> --On Friday, November 10, 2000 10:42 AM -0500 Tim Drury
>> <[EMAIL PROTECTED]> wrote:
>>
>> >
>> > I've gotten EJB->dep obj working for 1-to-1 and
>> > I've gotten EJB->EJB 1-to-1 and 1-to-many working.
>> > But for the life of me, I cannot get EJB->dep obj
>> > working for 1-to-many.
>> >
>> > The object model is:
>> >
>> > EdiFile(EJB) ---- 1 to N ----- EdiEnvelope (DO)
>> >
>> > This is a unidirectional relationship.  I think
>> > someone has been trying bi-directional with no
>> > luck.
>> >
>> > The problem manifests itself in two ways.  First,
>> > Orion throws an error when it tries to compiles
>> > the stubs/skeletons:
>> >
>> > class EdiEnvelope_Dependent0 is an abstract class.
>> > It can't be instantiated.
>> >
>> > (well this is obvious; dependent objects are supposed
>> > to be abstract).
>> >
>> > Second, the database table for my EJB doesn't contain
>> > _any_ reference to the dependent object.  BTW, the
>> > table for the dependent object looks fine.
>> >
>> > Thanks for any help,
>> > -tim
>> >
>> >
>> >
>> > Here is my dependent object:
>> >
>> > ------------------------------------------------------
>> > package com.tfc.ejb;
>> >
>> > import java.rmi.RemoteException;
>> > import javax.ejb.RemoveException;
>> >
>> > import java.util.Date;
>> > import java.util.Collection;
>> > import java.util.Iterator;
>> >
>> > public abstract class EdiEnvelope implements java.io.Serializable
>> > {
>> >    public abstract void setSenderIdQualifier(String s) throws
>> > RemoteException;
>> >    public abstract void setSenderId(String s) throws
>> RemoteException;
>> >    public abstract void setReceiverIdQualifier(String s) throws
>> > RemoteException;
>> >    public abstract void setReceiverId(String s) throws
>> RemoteException;
>> >    public abstract void setDate(Date d) throws RemoteException;
>> >    public abstract void setVersion(String s) throws RemoteException;
>> >    public abstract void setControlNumber(long l) throws
>> RemoteException;
>> >    public abstract void setAck(boolean b) throws RemoteException;
>> >    public abstract void setNumberOfGroups(int i) throws
>> RemoteException;
>> >    public abstract void setTransactionSets(Collection c) throws
>> > RemoteException;
>> >    public abstract void setId(String s) throws RemoteException;
>> >
>> >    public abstract String getSenderIdQualifier() throws
>> RemoteException;
>> >    public abstract String getSenderId() throws RemoteException;
>> >    public abstract String getReceiverIdQualifier() throws
>> RemoteException;
>> >    public abstract String getReceiverId() throws RemoteException;
>> >    public abstract Date getDate() throws RemoteException;
>> >    public abstract String getVersion() throws RemoteException;
>> >    public abstract long getControlNumber() throws RemoteException;
>> >    public abstract boolean getAck() throws RemoteException;
>> >    public abstract int getNumberOfGroups() throws RemoteException;
>> >    public abstract Collection getTransactionSets() throws
>> RemoteException;
>> >    public abstract String getId() throws RemoteException;
>> >
>> >    public String ejbCreateEdiEnvelope() throws RemoteException
>> >    {
>> >       this.setId( (new java.rmi.server.UID()).toString() );
>> >       return null;
>> >    }
>> >    public void ejbPostCreateEdiEnvelope() { }
>> >    public abstract EdiEnvelope deepCopy();
>> >
>> > } // end EdiEnvelope
>> > ----------------------------------------------------------
>> >
>> > Here is my EJB:
>> >
>> > ----------------------------------------------------------
>> > package com.tfc.ejb;
>> >
>> > import javax.ejb.EntityBean;
>> > import javax.ejb.CreateException;
>> > import javax.ejb.RemoveException;
>> > import java.rmi.RemoteException;
>> > import javax.ejb.EntityContext;
>> >
>> > import java.util.Date;
>> > import java.util.Iterator;
>> > import java.util.Collection;
>> >
>> > public abstract class EdiFileEJB implements EntityBean
>> > {
>> >    private EntityContext ec;
>> >
>> >    // accessors
>> >
>> >    public void setEntityContext(EntityContext ec) { this.ec = ec; }
>> >    public void unsetEntityContext()               { ec = null; }
>> >
>> >    public abstract void setFilename(String s);
>> >    public abstract void setDateDownloaded(Date d);
>> >    public abstract void setEnvelopes(Collection c);
>> >    public abstract void setId(String s);
>> >
>> >    public abstract String getFilename();
>> >    public abstract Date getDateDownloaded();
>> >    public abstract Collection getEnvelopes();
>> >    public abstract String getId();
>> >
>> >    public long getNumberOfEnvelopes()
>> >    {
>> >       Collection c = this.getEnvelopes();
>> >       return c.size();
>> >    }
>> >    public long getEnvelopeControlNumber(int index) throws
>> RemoteException
>> >    {
>> >       long controlNumber = 0;
>> >       Collection c = this.getEnvelopes();
>> >       try {
>> >          EdiEnvelope[] ea = (EdiEnvelope[])c.toArray();
>> >          EdiEnvelope e = ea[index];
>> >          controlNumber = e.getControlNumber();
>> >       } catch (Exception ex) {
>> >          throw new RemoteException("index out of bounds");
>> >       }
>> >       return controlNumber;
>> >    }
>> >
>> >    public void addEnvelope(String senderIdQualifier,
>> >                            String senderId,
>> >                            String receiverIdQualifier,
>> >                            String receiverId,
>> >                            Date date,
>> >                            String version,
>> >                            long controlNumber,
>> >                            boolean ack) throws RemoteException,
>> > CreateException
>> >    {
>> >       EdiEnvelope e = this.createEdiEnvelope();
>> >       e.setSenderIdQualifier(senderIdQualifier);
>> >       e.setSenderId(senderId);
>> >       e.setReceiverIdQualifier(receiverIdQualifier);
>> >       e.setReceiverId(receiverId);
>> >       e.setDate(date);
>> >       e.setVersion(version);
>> >       e.setControlNumber(controlNumber);
>> >       e.setAck(ack);
>> >       this.getEnvelopes().add(e);
>> >    }
>> >
>> >    public abstract EdiEnvelope createEdiEnvelope() throws
>> CreateException;
>> >
>> >    public String ejbCreate()
>> >    {
>> >       this.setId( (new java.rmi.server.UID()).toString() );
>> >       return null;
>> >    }
>> >
>> >    public void ejbPostCreate() { }
>> >    public void ejbActivate() { }
>> >    public void ejbPassivate() { }
>> >    public void ejbLoad() { }
>> >    public void ejbStore() { }
>> >    public void ejbRemove() { }
>> > } // end EdiFileEJB
>> >
>> > ---------------------------------------------------
>> >
>> > and here are the relevent parts of ejb-jar.xml:
>> >
>> > ----------------------------------------------------
>> >
>> > ...
>> >        <entity>
>> >           <cmp-version>2.x</cmp-version>
>> >              <description>EDI file</description>
>> >              <ejb-name>EdiFileEJB</ejb-name>
>> >              <home>com.tfc.ejb.EdiFileHome</home>
>> >              <remote>com.tfc.ejb.EdiFile</remote>
>> >              <ejb-class>com.tfc.ejb.EdiFileEJB</ejb-class>
>> >              <persistence-type>Container</persistence-type>
>> >              <reentrant>False</reentrant>
>> >              <cmp-field>
>> >                <field-name>filename</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>dateDownloaded</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>envelopes</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>id</field-name>
>> >              </cmp-field>
>> >              <primkey-field>id</primkey-field>
>> >              <prim-key-class>java.lang.String</prim-key-class>
>> >        </entity>
>> > ...
>> >
>> >       <dependent>
>> >          <dependent-name>EdiEnvelope</dependent-name>
>> >          <dependent-class>com.tfc.ejb.EdiEnvelope</dependent-class>
>> >              <cmp-field>
>> >                <field-name>senderIdQualifier</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>senderId</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>receiverIdQualifier</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>receiverId</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>date</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>version</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>controlNumber</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>ack</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>transactionSets</field-name>
>> >              </cmp-field>
>> >              <cmp-field>
>> >                <field-name>id</field-name>
>> >              </cmp-field>
>> >           <prim-key-class>java.lang.String</prim-key-class>
>> >              <primkey-field>id</primkey-field>
>> >        </dependent>
>> >
>> > ...
>> >
>> >       <ejb-relation>
>> >          <ejb-relation-name>EdiFile-EdiEnvelopes</ejb-relation-name>
>> >          <ejb-relationship-role>
>> >
>> >
>> <ejb-relationship-role-name>EdiFile-has-EdiEnvelopes</ejb-rela
>> tionship-ro
>> > le- name>
>> >             <multiplicity>one</multiplicity>
>> >             <role-source>
>> >                <ejb-name>EdiFileEJB</ejb-name>
>> >             </role-source>
>> >             <cmr-field>
>> >                <cmr-field-name>envelopes</cmr-field-name>
>> >                <cmr-field-type>java.util.Collection</cmr-field-type>
>> >             </cmr-field>
>> >          </ejb-relationship-role>
>> >          <ejb-relationship-role>
>> >
>> >
>> <ejb-relationship-role-name>EdiEnvelopes-belongsto-EdiFile</ej
>> b-relations
>> > hip -role-name>
>> >             <multiplicity>many</multiplicity>
>> >             <role-source>
>> >                <dependent-name>EdiEnvelope</dependent-name>
>> >             </role-source>
>> >             <cmr-field>
>> >                <cmr-field-name>ediFile</cmr-field-name>
>> >             </cmr-field>
>> >          </ejb-relationship-role>
>> >       </ejb-relation>
>> >
>>
>>
>>
>>





Reply via email to