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
-~----------~----~----~----~------~----~------~--~---