Now I understand your issue. I haven't done this before, but there's a special mapping tag called a discriminator that handles polymorphic persistence. Try reading this section of the reference manual:
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#mapping-declaration-discriminator
5.1.6. discriminator
The <discriminator> element is required for polymorphic persistence using the table-per-class-hierarchy mapping strategy and declares a discriminator column of the table. The discriminator column contains marker values that tell the persistence layer what subclass to instantiate for a particular row. A restricted set of types may be used: string, character, integer, byte, short, boolean, yes_no, true_false.