I have three classes mapped using the table-per-subclass class mapping strategy. The tables are:
- Images - ImageId, FileName, ImageData
- CategoryImages - CategoryId, ImageId
- ProductImages - ProductId, ImageId
We are mapping like so:
<class name="CatalogImage" table="Images">
<id name="Id" column="ImageId">
<generator class="guid.comb"/>
</id>
<property name="FileName"/>
<property name="ImageData" lazy="true"/>
<joined-subclass name="CategoryImage" table="CategoryImages">
<key column="ImageId"/>
<many-to-one name="Category" column="CategoryId"/>
</joined-subclass>
<joined-subclass name="ProductImage" table="ProductImages">
<key column="ImageId"/>
<many-to-one name="Product" column="ProductId"/>
</joined-subclass>
I am able to save instances of Image, CatalogImage and ProductImage.
However, the main reason for composing the image types in this way is so that I have one central image gallery from which I can grab images and attach them to a product, category etc.
This is the part I am struggling with. How can I retrieve an instance of Image and use it to create an instance of ProductImage and upon saving, add the reference to the ProductImage table.
I tried a basic cast (ProductImage)normalImage
but this failed as I'm using a dynamic proxy.
Thanks, Ben