Hibernate中的Entity类之间的继承关系之一MappedSuperclass
在hibernate中,Entity類可以繼承Entity類或非Entity類。但是,關(guān)系數(shù)據(jù)庫(kù)表之間不存在繼承的關(guān)系。那么在Entity類之間的繼承關(guān)系,在數(shù)據(jù)庫(kù)表中如何表示呢?
Hibernate提供了4種兼容JPA的策略,解決Entity類的繼承與關(guān)系數(shù)據(jù)庫(kù)表的對(duì)應(yīng)不匹配問(wèn)題。這里介紹第一種MappedSuperclass。
在這種策略中,存在如下特征:
只在Entity類之間存在繼承關(guān)系,其中的父Entity類使用@javax.persistence.MappedSuperclass標(biāo)注。
在關(guān)系數(shù)據(jù)庫(kù)中沒(méi)有父Entity類,一個(gè)具體子Entity類對(duì)應(yīng)一個(gè)表,其中包含一個(gè)具體子Entity類的全部屬性(包含父Entity類的屬性)。
示例中,父Entity類定義如下:
@MappedSuperclass public static class Account {@Idprivate 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;} }
另一個(gè)子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;} }
數(shù)據(jù)庫(kù)表結(jié)構(gòu)如下:
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 ) )
via:http://blog.csdn.net/taiyangdao/article/details/51578386
?
轉(zhuǎn)載于:https://www.cnblogs.com/nihaorz/p/7447588.html
總結(jié)
以上是生活随笔為你收集整理的Hibernate中的Entity类之间的继承关系之一MappedSuperclass的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: stdafx.h头文件
- 下一篇: template模板中插入自定义参数