@MappedSuperclass注解的使用说明
基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解仅仅能标准在类上:@Target({java.lang.annotation.ElementType.TYPE}) 2.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,可是他的属性都将映射到其子类的数据库字段中。 3.标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口。 可是假设一个标注为@MappedSuperclass的类继承了另外一个实体类或者另外一个相同标注了@MappedSuperclass的类的话。他将能够使用@AttributeOverride或 @AttributeOverrides注解重定义其父类(不管是否是实体类)的属性映射到数据库表中的字段。 比方能够重定义字段名或长度等属性。使用@AttributeOverride中的子属性@Column进行详细的定义。 注意:对于其父类中标注@Lob注解的属性将不能重载,而且@AttributeOverride里的@Column设置都将不起作用。 JPA规范中对@Lob注解并没有说明不能同一时候标注@Column注解