Hibernate 5 @Entity 如何 extends 另一个类

在实际项目设计中,咱们能够但愿在 JPA 中定义 @Entity 表。java

可是在这个 @Entity 类中,咱们但愿 extends 另一个类,在另一个类中咱们能够把一些通用的属性设置到里面。数据库

例如:app

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

}spa

那么咱们应该在 DataObject 添加什么注解?设计


须要在 DataObject 中添加 @MappedSuperclass 注解。blog

能够定义成以下:继承

@MappedSuperclass
public abstract class DataObject {
}接口

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

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

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

可是若是一个标注为@MappedSuperclass的类继承了另一个实体类或者另一个一样标注了@MappedSuperclass的类的话,他将能够使用@AttributeOverride或@AttributeOverrides注解重定义其父类(不管是不是实体类)的属性映射到数据库表中的字段。

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

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

相关文章
相关标签/搜索