I have a simple hierarchy of classes mapped with the "subclass + join"
strategy:

<class name="A" abstract="true">
        <id name="Id" column="a_id">
                <generator class="native" />
        </id>

        <discriminator column="a_type" type="string" />
        <property name="FieldA" column="a_field_a" />

        <subclass name="B" discriminator-value="B">
                <join table="B">
                        <key column="b_id" />
                        <property name="FieldB" column="b_field_b" />
                        <many-to-one name="C" column="c_id" not-null="true" />
                </join>
        </subclass>
</class>

and another entity is supposed to contain a collection of the subclass
B:

<class name="C">
        <id name="Id" column="c_id">
                <generator class="native" />
        </id>

        <set name="B" inverse="true" cascade="all-delete-orphan">
                <key column="c_id" />
                <one-to-many class="B" />
        </set>
</class>

I thought that NH would see that the foreign key of the collection
belonged to the joined table B and would join tables B and C. But
unfortunately NH didn't. The second try was to use may-to-many element
with the intermediate table:

<set name="B" table="B" inverse="true" cascade="all-delete-orphan">
        <key column="c_id" />
        <many-to-many class="B" column="b_id" unique="true" />
</set>

It works but when loading the collection NH joins table B twice: first
time to load an instance of class B and second time because of using
many-to-may element.

/* load collection NHTest.Model.C.B */ SELECT
    b0_.c_id as c3_1_,
    b0_.b_id as b1_1_,
    b1_.a_id as a1_3_0_,
    b1_.a_field_a as a3_3_0_,
    b1_1_.b_field_b as b2_4_0_,
    b1_1_.c_id as c3_4_0_
FROM
    B b0_
left outer join
    A b1_
        on b0_.b_id=b1_.a_id
left outer join
    B b1_1_
        on b1_.a_id=b1_1_.b_id
WHERE
    b0_.c_...@p0;
@p0 = 1

Besides of using many-to-many element, is there another way to point
out NH that it should look for a foreign key of the collection in the
joined table?

Thank you.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to