继承映射之每个子类一张表,使用辨别标志:父类和子类分放在不同的表中,子类通过父类id与父类关联,父类有一个字段来标名该纪录是哪个子类。只有父类有配置文件,父类中通过subclass -> join标识子类。
以前面的每个子类一张表为基础,表关系保持不变,给animal1表添加一个字段animal_type: alter table animal1 add animal_type varchar(10), 该字段用来表明animal是哪种动物。pojo,dao都保持不变。只需要修改一下映射文件:
Animal.hbm.xml:
测试用例:
可以看到,当insert的时候,产生两条sql:
insert into animal1 (name, zoo_id, animal_type) values (?, ?, 'MONKEY')
insert into monkey (age, animal_id) values (?, ?)