SpringData JPA 中 @MappedSuperclass 注解的使用

在进行实体类的封装时,有时候几张表中可能有很多的共同属性。每次都去建立不同的类很麻烦。这个时候可以建立一个共同属性的类,让其他类去继承这个类。然后映射到数据表中,

这个时候使用@MappedSuperclass 注解会很有用处 



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

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

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

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

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


猜你喜欢

转载自blog.csdn.net/weixin_41404773/article/details/80661365