Hibernate中的Entity类之间的继承关系之一MappedSuperclass
来源:互联网 发布:ubuntu 14.04 chrome 编辑:程序博客网 时间:2024/05/27 20:52
在Hibernate中,Entity类可以继承Entity类或非Entity类。但是,关系数据库表之间不存在继承的关系。那么在Entity类之间的继承关系,在数据库表中如何表示呢?
Hibernate提供了4种兼容JPA的策略,解决Entity类的继承与关系数据库表的对应不匹配问题。这里介绍第一种MappedSuperclass。
在这种策略中,存在如下特征:
- 只在Entity类之间存在继承关系,其中的父Entity类使用@javax.persistence.MappedSuperclass标注。
- 在关系数据库中没有父Entity类,一个具体子Entity类对应一个表,其中包含一个具体子Entity类的全部属性(包含父Entity类的属性)。
示例中,父Entity类定义如下:
@MappedSuperclasspublic static class Account { @Id private Long id; private String owner; private BigDecimal balance; private BigDecimal interestRate; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public BigDecimal getBalance() { return balance; } public void setBalance(BigDecimal balance) { this.balance = balance; } public BigDecimal getInterestRate() { return interestRate; } public void setInterestRate(BigDecimal interestRate) { this.interestRate = interestRate; }}
子Entity类定义如下:
@Entity(name = "DebitAccount")public static class DebitAccount extends Account { private BigDecimal overdraftFee; public BigDecimal getOverdraftFee() { return overdraftFee; } public void setOverdraftFee(BigDecimal overdraftFee) { this.overdraftFee = overdraftFee; }}
另一个子Entity类定义如下:
@Entity(name = "CreditAccount")public static class CreditAccount extends Account { private BigDecimal creditLimit; public BigDecimal getCreditLimit() { return creditLimit; } public void setCreditLimit(BigDecimal creditLimit) { this.creditLimit = creditLimit; }}
数据库表结构如下:
CREATE TABLE DebitAccount ( id BIGINT NOT NULL , balance NUMERIC(19, 2) , interestRate NUMERIC(19, 2) , owner VARCHAR(255) , overdraftFee NUMERIC(19, 2) , PRIMARY KEY ( id ))CREATE TABLE CreditAccount ( id BIGINT NOT NULL , balance NUMERIC(19, 2) , interestRate NUMERIC(19, 2) , owner VARCHAR(255) , creditLimit NUMERIC(19, 2) , PRIMARY KEY ( id ))
1 0
- Hibernate中的Entity类之间的继承关系之一MappedSuperclass
- Hibernate中的Entity类之间的继承关系之一MappedSuperclass
- Hibernate中的Entity类之间的继承关系之二SINGLE_TABLE
- Hibernate中的Entity类之间的继承关系之三JOINED
- Hibernate中的Entity类之间的继承关系之四TABLE_PER_CLASS
- hibernate @Entity @MappedSuperclass @ID
- Hibernate中关于@MappedSuperclass和@Entity的区别
- Hibernate中的Entity类之间的ManyToOne关联
- Hibernate中的Entity类之间的OneToMany关联
- Hibernate中的Entity类之间的OneToOne关联
- Hibernate中的Entity类之间的ManyToMany关联
- Hibernate的学习总结(映射类之间的继承关系)
- hibernate类之间继承关系映射
- Hibernate映射类中的继承关系
- Hibernate的继承关系
- Hibernate的继承关系
- hibernate的继承关系
- Hibernate的继承关系
- java TCP/IP网络编程(2)
- 排序算法之二 —— 插入排序两种实现思想
- GL_BOOK_4
- html 网页中的锚点(命名锚记)的使用介绍
- 关于如何获得虚拟机还是真机信息
- Hibernate中的Entity类之间的继承关系之一MappedSuperclass
- window对象的 innerheight、innerwidth
- SCEP 离线更新病毒库
- 欢迎使用CSDN-markdown编辑器
- Velocity + log4j + Spring MVC + Spirng + MyBatis + Maven整合
- 中断处理程序&中断服务例程
- spring管理bean生命周期
- Linux下进程崩溃时定位源代码位置
- 基因数据处理50之cs-bwamem、bwa、snap、bwa-mem与art比较