开发者社区> honeymoose> 正文

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进行具体的定义。

MappedSuperclass_hibernate

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
@Entity 里面的 JPA 注解
关于注解Entity的JPA实现方式
119 0
类(Class)
类(Class)
29 0
Spring源码解析—— ClassPathResource类
  一,简单介绍Spring中资源处理相关类 BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("applicationContext.
1085 0
【hibernate 报错】No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer 【get和load的区别】
报错: 1 HTTP Status 500 - Could not write content: No serializer found for class org.hibernate.proxy.
1176 0
+关注
honeymoose
CWIKI.US 站长。 从事开发多年,在彷徨和迷失的边缘徘徊。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载