GitHub
src="//ghbtns.com/github-btn.html?user=je-ge&repo=jpa&type=watch&count=true" scrolling="0" width="110" height="20">联合子类策略
这种情况下子类的字段被映射到各自的表中,这些字段包括父类中的字段,并执行一个join操作来实例化子类。
举例
如果实体类Teacher继承实体类Person,实体类Student也继承自实体Person,
会映射成3个表,子表不包含父表的属性,子表只有子类的属性,子表主键外键关联父表的id
这种策略超类会被映射成一个单独的表,每个子类也会映射成一个单独的表。子类对应的表中只包括自身属性对应的字段,默认情况下使用主键作为超类对应的表的外键。
这种策略对于实体间的多态关系提供了很好的支持。但缺点是实例化子类实例时需要一个或多个表的关联操作。在深层次的继承结构中,这会导致性能很低。
配置
注解为:@Inheritance(strategy = InheritanceType.JOINED)
ddl语句
CREATE TABLE `t_person` (
`type` int(11) NOT NULL,
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
CREATE TABLE `t_teacher` (
`address` varchar(255) DEFAULT NULL,
`id` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `FK_8ik5mbfy94c9cdklxfo2wqgg9` FOREIGN KEY (`id`) REFERENCES