例如对象Person是基类,OldPerson和YoungPerson是子类,继承Person。它们映射到表T_Person,<discriminator column>为dis,则定义
discriminator-value:
Person --> P
OldPerson --> O
YoungPerson --> Y
当T_Person生成Person对象的数据时,dis列的值为“P”;OldPerson对应的dis列值为“O”;YoungPerson为“Y”。
这样就能知道T_Person表的某一行数据是属于哪个对象的。
例子:
<hibernate-mapping>
<class name="Work" table="works" discriminator-value="W">
<id name="id" column="id">
<generator class="native"/>
</id>
<discriminator column="type" type="character"/>
<property name="title"/>
<set name="authors" table="author_work" lazy="true">
<key column="work_id" not-null="true"/>
<many-to-many class="Author" column="author_id" not-null="true"/>
</set>
<subclass name="Book" discriminator-value="B">
<property name="text"/>
</subclass>
<subclass name="Song" discriminator-value="S">
<property name="tempo"/>
<property name="genre"/>
</subclass>
</class>
</hibernate-mapping>