zoukankan      html  css  js  c++  java
  • Hibernate 5 @Entity 如何 extends 另外一个类

    在实际项目设计中,我们可以希望在 JPA 中定义 @Entity 表。

    但是在这个 @Entity 类中,我们希望 extends 另外一个类,在另外一个类中我们可以把一些通用的属性设置到里面。

    例如:

    public class Covid19Current extends DataObject implements java.io.Serializable {
    
    }

    那么我们应该在 DataObject 添加什么注解?


    需要在 DataObject 中添加 @MappedSuperclass 注解。

    可以定义成如下:

    @MappedSuperclass
    public abstract class DataObject {
    }

    @MappedSuperclass注解只能标准在类上:@Target({java.lang.annotation.ElementType.TYPE})

    标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。

    标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口。

    但是如果一个标注为@MappedSuperclass的类继承了另外一个实体类或者另外一个同样标注了@MappedSuperclass的类的话,他将可以使用@AttributeOverride或@AttributeOverrides注解重定义其父类(无论是否是实体类)的属性映射到数据库表中的字段。

    比如可以重定义字段名或长度等属性,使用@AttributeOverride中的子属性@Column进行具体的定义。

    https://www.cwiki.us/display/HIBERNATE/questions/57938957

  • 相关阅读:
    java反射——字段
    java反射——方法
    java反射——构造方法
    代构建高可用分布式系统的利器——Netty
    JavaEE复习计划
    Java基础复习计划(三)
    Java基础复习计划(二)
    Java基础复习计划
    关于内网穿透的相关内容
    Docker化你的应用
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/12682864.html
Copyright © 2011-2022 走看看