Bidirectional relationships do not yet work.

There are two workarounds that have worked for me:

Manually add (and remove!) both sides of the relationship.  So your
Marketplace.addStorefront() method would look like this:

void addStorefront(Storefront front)
{
        this.getStorefronts().add(front);
        
front.setMarketplace((Marketplace)this.ejbContext.getEJBObject());
}

etc.  Alternatively you can modify your
Marketplace.getMarketplaceStorefronts() method so that instead of
obtaining the storefronts from the internal collection it runs a
findByMarketplace finder method on the StorefrontHome.  Then you just
need to make sure that the storefronts->marketplace reference is kept
solid.

Jeff

>-----Original Message-----
>From: Michael A Third [mailto:[EMAIL PROTECTED]]
>Sent: Thursday, February 22, 2001 3:37 PM
>To: Orion-Interest
>Subject: CMP 2.0 OR mapping problem
>
>
>I have been trying to get Orion to correctly map a non-dependant
>bidirectional 1:N relationship using EJB 2.0.  It tries to generate a
>collection mapping that uses a third table to hold the 
>reference.  I was
>able to deploy it properly using a unidirectional relationship.
>
>Here is the relevant entries from ejb-jar.xml (edited for brevity):
>               <entity>
>                       
><ejb-name>com.trademotion.ejb.base.Marketplace</ejb-name>
>                       
><cmp-field><field-name>marketplaceID</field-name></cmp-field>
>                       
><cmp-field><field-name>name</field-name></cmp-field>
>                       
><cmp-field><field-name>storefronts</field-name></cmp-field>
>                       <primkey-field>marketplaceID</primkey-field>
>               </entity>
>               <entity>
>                       
><ejb-name>com.trademotion.ejb.base.Storefront</ejb-name>
>                       
><cmp-field><field-name>storefrontID</field-name></cmp-field>
>                       
><cmp-field><field-name>name</field-name></cmp-field>
>                       
><cmp-field><field-name>marketplace</field-name></cmp-field>
>                       <primkey-field>storefrontID</primkey-field>
>               </entity>
>
>       <relationships>
>               <!-- 1:N (Marketplace Storefront) -->
>               <ejb-relation>
>                       
><ejb-relation-name>Marketplace-Storefront</ejb-relation-name>
>
>                       <ejb-relationship-role>
>                               
><ejb-relationship-role-name>marketplace-has-storefronts
>                               </ejb-relationship-role-name>
>                               <multiplicity>One</multiplicity>
>                               <role-source>
>                                       
><ejb-name>com.trademotion.ejb.base.Marketplace</ejb-name>
>                               </role-source>
>                               <cmr-field>
>                                       
><cmr-field-name>storefronts</cmr-field-name>
>                                       
><cmr-field-type>java.util.Collection</cmr-field-type>
>                               </cmr-field>
>                       </ejb-relationship-role>
>
>                       <ejb-relationship-role>
>                               
><ejb-relationship-role-name>storefront-belongsto-marketplace
>                               </ejb-relationship-role-name>
>                               <multiplicity>Many</multiplicity>
>                               <cascade-delete/>
>                               <role-source>
>                                       
><ejb-name>com.trademotion.ejb.base.Storefront</ejb-name>
>                               </role-source>
>                               <cmr-field>
>                                       
><cmr-field-name>marketplace</cmr-field-name>
>                                       
><cmr-field-type>com.trademotion.ejb.base.Marketplace
>                                       </cmr-field-type>
>                               </cmr-field>
>                       </ejb-relationship-role>
>               </ejb-relation>
>
>       </relationships>
>Here is the generated orion-ejb-jar.xml (again, edited):
>               <entity-deployment 
>name="com.trademotion.ejb.base.Marketplace">
>                       <primkey-mapping>
>                               <cmp-field-mapping 
>name="marketplaceID" persistence-
>                                       name="marketplaceID" />
>                       </primkey-mapping>
>                       <cmp-field-mapping name="storefronts">
>                               <collection-mapping
>                                       
>table="com_trademotion_ejb_base_Marketplace_storefronts">
>                                       <primkey-mapping>
>                                               
><cmp-field-mapping name="marketplaceID" persistence-
>                                                       
>name="marketplaceID" />
>                                       </primkey-mapping>
>                                       <value-mapping 
>type="com.trademotion.ejb.base.Storefront">
>                                               
><cmp-field-mapping name="value">
>                                                       <entity-ref
>                                                       
>home="com.trademotion.ejb.base.Storefront">
>                                                               
><cmp-field-mapping name="value"                                
>                                               persistence-name="value"
>/>
>                                                       </entity-ref>
>                                               </cmp-field-mapping>
>                                       </value-mapping>
>                               </collection-mapping>
>                       </cmp-field-mapping>
>               </entity-deployment>
>
>The Storefront side of relationship is generated correctly.  
>From previous
>posts, Orion supports what I'm trying to do (btw, I'm using 1.4.7).
>
>Thanks,
>
>Michael A Third
>Parts.com
>
>-----Original Message-----
>From: [EMAIL PROTECTED]
>[mailto:[EMAIL PROTECTED]]On Behalf Of 
>Robert Krueger
>Sent: Thursday, February 22, 2001 1:44 PM
>To: Orion-Interest
>Subject: RE: No influence on CMP 2.0 getter setter methods - a feature
>or abug?
>
>
>
>>
>>There seems to be some smart-ass named "Robert Krueger"
>>who thinks he knows all the answers :) :) :)
>
>I've heard of him. he must be a real pain in the ass ;).
>
>cheers,
>
>robert
>
>>Thanks Robert!
>>
>>-tim
>
>(-) Robert Krüger
>(-) SIGNAL 7 Gesellschaft für Informationstechnologie mbH
>(-) Brüder-Knauß-Str. 79 - 64285 Darmstadt,
>(-) Tel: 06151 665401, Fax: 06151 665373
>(-) [EMAIL PROTECTED], www.signal7.de
>
>
>

Reply via email to