美文网首页
JPA 实体类的继承并复用父类属性

JPA 实体类的继承并复用父类属性

作者: 技术指北 | 来源:发表于2021-11-22 22:35 被阅读0次

简述

说JPA或许有些道友没太大影响,很多都喜欢用mybatis或者M-P,但一说hibernate,估计大家伙都脑子一灵光了,其实JPA底层也是hibernate的一种,操作跟hibernate基本一样,当然作为spring全家桶的一员,肯定也是做了一些特有的封装。

JPA跟hibernate一样,都可以通过建实体类来自动创建数据库的表,但是,我们日常开发中常常会有这样想法,例如A、B两张表,B表拥有A表的所有属性,这时就想数据表能各自用各自的所有字段,但实体类A独立,实体类B在继承A类后只需再附加额外的属性即可,要想实现这种效果,我需要用到jakarta.persistence-api中的@Inheritance注解。此文利用H2数据库作练习,下面看图实践:

实践

新建两个实体类,Child、Parent,并且Child简单继承Parent。

@Entity
@Table(name = "t_parent")
@Data
public class Parent {
    @Id
    @Column(name = "class_id")
    private String classID;
    @Column(name = "class_name")
    private String className;
    @Column(name = "class_type")
    private String classType;
}
@Entity
@Table(name = "t_child")
@Data
public class Child extends Parent{

    @Column
    private String level;
}

启动项目看SQL打印:

继承未成功

只创建了t_parent,并直接使用了子类的属性;

下面给Parent实体类加上注解 @Inheritance:

效果:

实现成功

ps:strategy的值一定是
InheritanceType.TABLE_PER_CLASS 哦,不然达不到效果!!!

相关文章

网友评论

      本文标题:JPA 实体类的继承并复用父类属性

      本文链接:https://www.haomeiwen.com/subject/hgditrtx.html