Hello,

I am trying to map an inheritance hierarchy using fluent mappings and
the table per subclass strategy. I am specifying the table name in
both the base class and subclass with the following mapping.

    public class UnitMapping : BaseMapping<Unit>
    {
        public UnitMapping()
        {
            WithTable("Units");
            Id(x => x.Id).ColumnName("unit_id");
            References(x => x.Division).WithForeignKey("division_id");
            References(x => x.Area).WithForeignKey("area_id");
            Map(x => x.Designation).ColumnName("designation");
           .....
            Map(x => x.Voltage).ColumnName("voltage");
            JoinedSubClass<Crane>("unit_id",
                m =>
                {
                    WithTable("Cranes");
                    m.Map(y => y.Type).ColumnName("type");
                    m.Component<Hoist>(x => x.Hoist, c =>
                    {
                        c.Map(x => x.Type).ColumnName("hoist_type");
                        c.Map(x => x.Make).ColumnName("hoist_make");
                        ...
                        c.Map(x => x.Voltage).ColumnName
("hoist_voltage");
                        c.Map(x => x.Capacity).ColumnName
("hoist_capacity");
                    });
                });

        }
    }

This mapping produces the following hbm file

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
access="">
  <class name="PMR.Core.Model.Unit, PMR.Core, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" table="Cranes"
xmlns="urn:nhibernate-mapping-2.2">
    <id name="Id" type="Guid" column="unit_id">
      <generator class="guid.comb" />
    </id>
    <property name="Created" type="DateTime">
      <column name="created" />
    </property>
    ...
    <property name="Voltage" type="String">
      <column name="voltage" />
    </property>
    <many-to-one foreign-key="division_id" name="Division"
column="Division_id" />
    <many-to-one foreign-key="area_id" name="Area" column="Area_id" />
    <joined-subclass name="PMR.Core.Model.Crane, PMR.Core,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
      <key column="unit_id" />
      <component name="Hoist" insert="true" update="true">
        <property name="Type" type="String">
          <column name="hoist_type" />
        </property>
        .....
        <property name="Capacity" type="String">
          <column name="hoist_capacity" />
        </property>
      </component>
      <property name="Type" type="String">
        <column name="type" />
      </property>
    </joined-subclass>
  </class>
</hibernate-mapping>


Notice how the base class has its table attribute set to "Cranes" when
the table name is "Units" and the joined-subclass doesn't specify any
table name attribute.  In addition trying to insert a new crane
produces a sql statement with a left outer join on "Crane". I am not
sure if this is related.

It is entirely possible I am overlooking something simple but any help
would be appreciated.
Thanks,

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" 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/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to