1. 程式人生 > >Hibernate教程04——類繼承(子類、父類連結表)

Hibernate教程04——類繼承(子類、父類連結表)

Hibernate教程04——類繼承(子類、父類連結表)

一、簡介

每個類都生成一張表,父類儲存公共資料,子類儲存自己獨有的資料,通過id進行關聯。

父類(Animal)和子類(PigBird)均生成一張表,其中父類表中存放公共的屬性,子類表中分別存放各自的屬性欄位,子表的主鍵均來自主表。如下表所示:

一、父類Tree和相關annotation的配置

@Entity

@Inheritance(strategy = InheritanceType.JOINED)

public class Tree {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "id")

private Long id;

private String name;

private String description;

 

@ManyToOne

private Tree parent;

 

@OneToMany

private List<Tree> children;

 

public Long getId() {

return id;

}

 

public void setId(Long id) {

this.id = id;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

public String getDescription() {

return description;

}

 

public void setDescription(String description) {

this.description = description;

}

 

public Tree getParent() {

return parent;

}

 

public void setParent(Tree parent) {

this.parent = parent;

}

 

 

 

public List<Tree> getChildren() {

return children;

}

 

public void setChildren(List<Tree> children) {

this.children = children;

}

}


二、子類Department

同前

三、子類menu

同前

四、測試類

同前

五、生成的表

 

六、表中的資料

 

圖 1 資料庫表department中的資料

 

圖 2 資料庫表menu中的資料

 

圖 3 資料庫表tree中的資料

相關推薦

Hibernate教程04——繼承連結

Hibernate教程04——類繼承(子類、父類連結表) 一、簡介 每個類都生成一張表,父類儲存公共資料,子類儲存自己獨有的資料,通過id進行關聯。 父類(Animal)和子類(Pig、Bird)均生

A繼承B, A a = new A(); 則B建構函式B靜態程式碼塊B非靜態程式碼塊A建構函式A靜態程式碼塊A非靜態程式碼塊 執行的先後順序是?

(1)子類A繼承父類B, A a = new A(); 則: 父類B靜態程式碼塊->子類A靜態程式碼塊->父類B非靜態程式碼塊->父類B建構函式->子類A非靜態程式碼塊->子類A建構函式 (2)若子類建構函式中顯式的呼叫了父類

模板繼承後找不到函數的問題

argument 有關 過程 類繼承 找不到 his cout this 添加 錯誤示例: 1 template<class T> class List 2 { 3 public: 4 void next(T*){

繼承構造執行的過程

執行 ring 函數 方法 strong main方法 繼承 pri void 繼承中子類構造的執行過程: 1.從Main函數跳轉到子類有參構造,但是不進入方法體,無論有無base(),都會跳轉到父類構造 2.跳轉到父類有參構造,執行構造體

繼承後想要擴展方法

保留 回調 gen obj pcl logs col 父類 sel 1 >>> class PClass(object): 2 def setInfo(self,sex=‘Male‘): 3 self.gender = se

c++——繼承中的物件和基物件的初始化

先給結論: (1)派生類中的基類子物件和子物件必須初始化,初始化在派生類的建構函式的初始化列表中,如果初始化列表中沒有進行初始化,則呼叫預設的建構函式進行初始化。 (2)派生類建構函式的呼叫順序:   基類的建構函式   子物件類的建構函式   派生類的建構函式 例子

阿裏 Java 手冊系列教程:為啥強制變量名不同?

會有 局部變量 寫法 boolean 實例 lean 示例 控制 多層嵌套 摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關註和轉載,保留摘要,謝謝! 目錄 父子類變量名相同會咋樣? 為啥強制子類、父類

Java:驗證在繼承過程中equals() hashcode()toString()方法的使用

red ger 輸出 ria oid nag println manage base 以下通過實際例子對類創建過程匯中常用的equals()、hashcode()、toString()方法進行展示,三個方法的創建過程具有通用性,在項目中可直接改寫。 //通過超類Employ

schema的元素數據復雜數據

get nco cit XML com sta 匿名 hid bsp 1.簡單元素的聲明 <xs:element name="元素名稱" type="xs:string" default="默認值" minOccurs="nonNegetiveInteger" ma

java基礎 第十二章異常處理工具集合

重寫 trac com int 出現異常 sta 順序存儲 空指針異常 處理 一、異常處理 1.兩種異常: (1)程序員自身問題(運行時異常) (2)外界問題(可控異常) 2.兩種異常的詳細說明 (1)運行時異常

SQL數據SQL Server六個型使用

serve strong ron 時間 ima 要求 建表 進制數 相關數 SQL數據類型是一個屬性,它指定任何對象的數據的類型。在SQL中每一列,變量和表達有相關數據類型。 當創建表時,需要使用這些數據類型。 會選擇根據表列要求選擇一個特定的數據類型。 SQL Serve

python 高級數據列表 元祖 字典 字符串

nta 代碼 upper 獨立 復數 能夠 增加 capital 存儲 高級變量類型 目標 列表 元組 字典 字符串 公共方法 變量高級 知識點回顧 Python 中數據類型可以分為 數字型 和 非數字型 數字型 整型 (int) 浮點型(float) 布爾型(bo

Java 009 面向物件多型抽象介面

知識點梳理 心得體會 小知識點 1.多型中成員訪問特點:成員方法看左右,子類都會先訪問父類構造方法(先初始化父類成員才能被子類呼叫),其他只看左邊 2.多型缺點:不能使用子類特有功能,解決辦法有兩種:一、建立子類物件調方法(不合理且佔記憶體)二、向下轉型:Zi z=(Zi)

Java學習日常多型包裝final修飾符抽象

學習內容 多型中的instanceof運算子 public class Client1 { public static void main(String[] args) { Animal tom = new Dog(); Anim

Java 知識點整理-3.面向物件多型抽象介面

1、多型概述:事物存在的多種形態。 2、多型前提:要有繼承關係;要有方法重寫;要有父類引用指向子類物件(父類名 識別符號 = new 子類名();)。 3、多型中的成員訪問特點:Ⅰ.成員變數:編譯看左邊(父類),執行看左邊(父類)。 4、多型中的成員訪問特點:Ⅱ.成員方法:編譯看左邊(父

java的幾種關係詳解有程式碼

前言 知道類的幾種關係也是程式設計的基礎知識,通常我們在軟體設計、架構設計、開發中都需要使用的, 類的關係 一般情況下類的關係分為6種,分別是實現、繼承、依賴、關聯、聚合、組合,下面將這6中關係簡單的分類 (1)is a -->繼承、實現 (2)has a-->關聯、

7-1 jmu-Java-03面向物件基礎-04-形狀-繼承 10 分計科其他班的題

前言 前面題目形狀中我們看到,為了輸出所有形狀的周長與面積,需要建立多個數組進行多次迴圈。這次試驗使用繼承與多型來改進我們的設計。 本題描述: 定義抽象類Shape 屬性:不可變靜態常量double PI,值為3.14, 抽象方法:public double getPerimet

各種方法的執行順序

package parentAndChild; /**  * 狗類,繼承動物  */ public class Dog extends Animal{public static void main(String[] args) {Dog Dog = new Dog();Dog.A();}static {Sys

使用SourceInsight檢視Framework的原始碼如ActivityThreadContextImpl的原始碼

不詩意的女程式猿不是好廚師~ 事情原由,ps:可直接忽略跳過~ 由於專案中我對Service的使用不當造成了一個bug,經過反思,我覺得還是因為自己基礎不紮實造成的。於是又看了一遍《第一行程式碼》和《Android開發藝術探索》中關於Service的部分,

Javase易錯之方法重寫 方法返回值應比返回值更小或相等

很多初學者都認為javase方法重寫子類方法返回值型別應和父類方法返回值應 該相等,其實不然。  子類重寫方法的返回值必須比父類方法的返回值小或相等的意思是說  子類重寫方法的返回值型別應為父類方