hibernate映射继承关系:有三种方式实现
subclass joined_cubclass union_subclass
1. subclass 父类和子类同在一张表,里面加入了辨别者列,通过辨别者列的值来区分,子类对象和父类对象
优点:只操作一个表
缺点:子类的属性,不能设置为非空 。如果子类的属性较多,一个表的字段就非常多
辨别者列只能放在id列后面:例
<id></id> <discriminator column="TYPE" type="string"></discriminator> //discriminator-value="student"指定的是子类在辨别者类中的值 <subclass name="Student" discriminator-value="student"> <property name="school" column="SCHOOL" ></property> </subclass>
2.joined_subclass 子类和父类,对应两张表,通过外键,实现关系
父类表存父类字段,子类表存子类字段
优点,两个表字段没有多余 没有重复,子类属性,可以为非空
缺点:要操作两个表
例 有个person类,student是其子类
<joined-subclass name="Student" table="STUDENTS"> <!-- 子类对应得表的外键名称 --> <key column="STUDENTID"></key> <!-- 子类的其他属性 --> <property name="school" column="SCHOOL" type="string"></property> </joined-subclass>
3.union_subclass 父类和子类,对应两张表 ,父类表存父类字段,子类表存父类和子类字段
优点:子类属性,可以为非空,操作子类单表操作,操作父类 多表操作
缺点:子类对应的类,有很多父类的属性
例
<union-subclass name="Student" table="STUDENTS"> <property name="school" column="SCHOOL" type="string"></property> </union-subclass>
时间: 2024-10-07 14:21:47