James,
 
can you please attach all relevant files to a new Jira issue (incl.
domain classes, SQL scripts, etc.), and I will have a look. Having said
that, you should find a fully blown sample using exactly such a scenario
in the source distribution of Castor, namely in the CTF test suite (in
the jdo.ct9x package) (incl a mapping file).
 
Werner


________________________________

        From: James White [mailto:[EMAIL PROTECTED] 
        Sent: Montag, 18. Dezember 2006 06:31
        To: [email protected]
        Subject: [castor-user] M:N association problem (with
inheritance)
        
        
        I have two (2) issues I am trying to solve with regard to M:N
relationships.  One on load and one on creating.  I am using Castor
1.0.5 with MySQL 5.
         
        I have an inheritance model that has an employee and customer
class that extend a Person class.  I also have a bi-directional M:N
relationship from Person to Address.  The relavant mapping is below.
         
        When I read in my Employee or Customer objects, I get an
infinite loop unless I remove the "persons" field from Address (i.e.
make the relationship unidirectional).  If I do this, the load of a
customer or employee with its associated set of addresses works fine.
         
        My second issue is that the join relationship table (a
person_address table) is not getting populated when I create a Customer
and Address and relate one to the other.  I have read a couple of the
emails in this archive and found suggestions for alternate creation of
the objects (create and save the objects first, set the association and
then commit) but no matter what I do, the relationship does not get
saved in the database - even though the objects do.
         
        Thanks for any help.
        jim
         
         
            <class name="com.intertech.domain.Person" identity="id"
key-generator="IDENTITY">
                <description>Person superclass</description>
                <map-to table="persons"/>
                <field name="id">
                    <sql name="person_id" />
                </field>
                <!-- more fields here ... -->
                <field name="addresses"
type="com.intertech.domain.Address" collection="set">
                   <sql name="address_id"
                        many-table="person_address" many-key="person_id"
/>
                </field>        
            </class>
            
            <class name="com.intertech.domain.Employee"
extends="com.intertech.domain.Person" identity="id">
                <description>Employee subclass extends
person</description>
                <map-to table="employees" />
                <field name="id">
                    <sql name="employee_id" />
                </field>
                <!-- more fields here ... -->
            </class>
            
            <class name="com.intertech.domain.Customer"
extends="com.intertech.domain.Person" identity="id">
                <description>Customer subclass extends
person</description>
                <map-to table="customers" />
                <field name="id">
                    <sql name="customer_id" />
                </field>
                <!-- more fields here ... -->
            </class>
            
            <class name="com.intertech.domain.Address" identity="id">
                <description>Addresses in many to many relationship with
Person</description>
                <map-to table="addresses"/>
                <field name="id">
                    <sql name="address_id" />
                </field>        
                <!-- more fields here ... -->
        <!-- I have to remove this next field in order to avoid an
infinite loop when I read employee or customer objects -->
                <field name="persons" type="com.intertech.domain.Person"
collection="set" >
                   <sql name="person_id"
                        many-table="person_address"
many-key="address_id" />
                </field>  
            </class>

Reply via email to