这种做法是不再有父类表,每个子类一个表,子类除了专有字段,还有父类的字段,只有父类有配置文件,父类配置文件通过union-subclass标识子类。
为了不和以前的demo产生冲突,新建表monkey1, tiger1;
monkey1(id, name, zoo_id, age);
tiger1(id, name, zoo_id, kind);
需要注意的是:因为hibernate通过id辨别对象,为了父类不产生冲突,子类不能使用identity, native等主键生成方式。
以上配置文件要注意两点:
1 class Animal要标识为abstract;否则在查询所有animal的时候会出错;
2 id使用了uuid. 不能用identity, sequence, native等。
写测试用例查询所有的Animal会发现,hibernate通过union来操作的。