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