多表继承:
Bean:
public class Person implements Serializable{ private int id ; private String name ; private int age ; } public class Student extends Person implements Serializable { private String dream ; private Date birthday ; } public class Teacher extends Person implements Serializable{ private String job ; private boolean merry ; }
xml(在同一个表中,加一个字段来区分类型):
Person.hbm.xml: <class name = "Person" discriminator-value="p"> <id name = "id"> <generator class="native" /> </id> <!-- discriminator 是新建一个列,此列用来区分对象具体的类型 discriminator-value 定义插入一个具体的对象的时候,自动向type列中插入指定的值 --> <discriminator column="type" /> <property name="name" /> <property name="age" /> <subclass name = "Teacher" discriminator-value="t"> <property name="job" /> <property name="merry" /> </subclass> <subclass name = "Student" discriminator-value="s"> <property name="dream" /> <property name="birthday" /> </subclass> </class>
xml(在不同表中):
Person.hbm.xml: <class name = "Person"> <id name = "id"> <generator class="native" /> </id> <property name="name" /> <property name="age" /> <joined-subclass name="Teacher" table="Teacher"> <key column="pid" /> <property name="job" /> <property name="merry" /> </joined-subclass> <joined-subclass name="Student" table="Student"> <key column="pid" /> <property name="dream" /> <property name="birthday" /> </joined-subclass> </class>