生活随笔
收集整理的這篇文章主要介紹了
@Inheritance
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hibernate繼承策略總共有三種,一種是共用一張表;一種是每個類一張表,表里面儲存子類的信息和父類的信息;還有一種是通過表連接的方式,每個類都有一張表,但是子類對應的表只保存自己的信息,父類對應的表保存父類的信息,它們之間通過子類表和父類表的關聯來獲取所有的信息。
第一種方式,即共用一張表:
Java代碼 ?
@Entity ?? @Inheritance (strategy=InheritanceType.SINGLE_TABLE)?? @DiscriminatorColumn (name="discriminator" ,?discriminatorType=DiscriminatorType.STRING)?? @DiscriminatorValue ("person" )?? public ?class ?Parent?{?? ????private ?int ?id;?? ????private ?String?name;?? ?????? ????@Id ?? ????@GeneratedValue ?? ????public ?int ?getId()?{?? ????????return ?id;?? ????}?? ????public ?void ?setId(int ?id)?{?? ????????this .id?=?id;?? ????}?? ????public ?String?getName()?{?? ????????return ?name;?? ????}?? ????public ?void ?setName(String?name)?{?? ????????this .name?=?name;?? ????}?? ?? }?? ?? @Entity ?? @DiscriminatorValue ("child1" )?? public ?class ?Child1?extends ?Parent?{?? ????private ?String?email;?? ?? ????public ?String?getEmail()?{?? ????????return ?title;?? ????}?? ?? ????public ?void ?setEmail(String?email)?{?? ????????this .email?=?email;?? ????}?? ?? ?????? }?? ?? ?? ?? @Entity ?? @DiscriminatorValue ("child2" )?? public ?class ?Child2?extends ?Parent?{?? ?????? ????private ?String?address;?? ?? ????public ?String?getAddress()?{?? ????????return ?score;?? ????}?? ?? ????public ?void ?setAddress(String?address)?{?? ????????this .address?=?address;?? ????}?? ?????? }???
? ? ? ? 這種情況父類和所有子類的所有信息都保存在同一張表里面,通過我們指定的@DiscriminatorColumn對應的@DiscriminatorValue來區別不同的類。 當沒有指定@DiscriminatorValue的時候將使用全類名來作為DiscriminatorValue。
?
?
第二種策略是每個類一張表,保存所有信息:
Java代碼 ?
@Entity ?? @Inheritance (strategy=InheritanceType.TABLE_PER_CLASS)?? @TableGenerator (?????????? ????????name="t_gen" ,?? ????????table="t_gen_table" ,?? ????????pkColumnName="t_pk" ,?? ????????valueColumnName="t_value" ,?? ????????pkColumnValue="person_pk" ,?? ????????initialValue=1 ,?? ????????allocationSize=1 ?? ????????)?? public ?class ?Parent?{?? ????private ?int ?id;?? ????private ?String?name;?? ?????? ????@Id ?? ????@GeneratedValue (generator="t_gen" ,?strategy=GenerationType.TABLE)?? ????public ?int ?getId()?{?? ????????return ?id;?? ????}?? ????public ?void ?setId(int ?id)?{?? ????????this .id?=?id;?? ????}?? ????public ?String?getName()?{?? ????????return ?name;?? ????}?? ????public ?void ?setName(String?name)?{?? ????????this .name?=?name;?? ????}?? ?? }?? ?? ?? @Entity ?? public ?class ?Child2?extends ?Parent?{?? ?????? ????private ?String?address;?? ?? ????public ?String?getAddress()?{?? ????????return ?score;?? ????}?? ?? ????public ?void ?setAddress(String?address)?{?? ????????this .address?=?address;?? ????}?? ?????? }?? ?? ?? @Entity ?? public ?class ?Child1?extends ?Parent?{?? ????private ?String?email;?? ?? ????public ?String?getEmail()?{?? ????????return ?title;?? ????}?? ?? ????public ?void ?setEmail(String?email)?{?? ????????this .email?=?email;?? ????}?? ?? ?????? }??
?
?
弟三種方式是采用表連接的方式:
Java代碼 ?
@Entity ?? @Inheritance (strategy=InheritanceType.JOINED)?? ?? public ?class ?Parent?{?? ????private ?int ?id;?? ????private ?String?name;?? ?????? ????@Id ?? ????@GeneratedValue ?? ????public ?int ?getId()?{?? ????????return ?id;?? ????}?? ????public ?void ?setId(int ?id)?{?? ????????this .id?=?id;?? ????}?? ????public ?String?getName()?{?? ????????return ?name;?? ????}?? ????public ?void ?setName(String?name)?{?? ????????this .name?=?name;?? ????}?? ?? }?? ?? @Entity ?? public ?class ?Child2?extends ?Parent?{?? ?????? ????private ?String?address;?? ?? ????public ?String?getAddress()?{?? ????????return ?score;?? ????}?? ?? ????public ?void ?setAddress(String?address)?{?? ????????this .address?=?address;?? ????}?? ?????? }?? ?? ?? @Entity ?? public ?class ?Child1?extends ?Parent?{?? ????private ?String?email;?? ?? ????public ?String?getEmail()?{?? ????????return ?title;?? ????}?? ?? ????public ?void ?setEmail(String?email)?{?? ????????this .email?=?email;?? ????}?? ?? ?????? }??
? ? ? ? ?采用表連接的情況,還是每個類擁有自己的一張表,只是子類對應的表只保存子類的信息,其父類的信息由父類的表保存。當需要獲取子類的完整信息時通過表連接的方式連接子類的表和父類的表獲取對應信息。可以在子類的表上標注@PrimaryKeyJoinColumn(name="foreignKeyName")指明子類表相對于父類表外鍵的名稱。
# 歡迎使用Markdown編輯器
你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,了解一下Markdown的基本語法知識。
新的改變
我們對Markdown編輯器進行了一些功能拓展與語法支持,除了標準的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你用它寫博客:
全新的界面設計 ,將會帶來全新的寫作體驗;在創作中心設置你喜愛的代碼高亮樣式,Markdown 將代碼片顯示選擇的高亮樣式 進行展示; 增加了 圖片拖拽 功能,你可以將本地的圖片直接拖拽到編輯區域直接展示; 全新的 KaTeX數學公式 語法; 增加了支持甘特圖的mermaid語法 功能; 增加了 多屏幕編輯 Markdown文章功能; 增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區域同步滾輪設置 等功能,功能按鈕位于編輯區域與預覽區域中間; 增加了 檢查列表 功能。
功能快捷鍵
撤銷:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜體:Ctrl/Command + I 標題:Ctrl/Command + Shift + H 無序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Command + Shift + O 檢查列表:Ctrl/Command + Shift + C 插入代碼:Ctrl/Command + Shift + K 插入鏈接:Ctrl/Command + Shift + L 插入圖片:Ctrl/Command + Shift + G
合理的創建標題,有助于目錄的生成
直接輸入1次#,并按下space后,將生成1級標題。 輸入2次#,并按下space后,將生成2級標題。 以此類推,我們支持6級標題。有助于使用TOC語法后生成一個完美的目錄。
如何改變文本的樣式
強調文本 強調文本
加粗文本 加粗文本
標記文本
刪除文本
引用文本
H2 O is是液體。
210 運算結果是 1024.
插入鏈接與圖片
鏈接: link.
圖片:
帶尺寸的圖片:
居中的圖片:
居中并且帶尺寸的圖片:
當然,我們為了讓用戶更加便捷,我們增加了圖片拖拽功能。
如何插入一段漂亮的代碼片
去博客設置頁面,選擇一款你喜歡的代碼片高亮樣式,下面展示同樣高亮的 代碼片.
var foo
= 'bar' ;
生成一個適合你的列表
項目1 項目2 項目3
創建一個表格
一個簡單的表格是這么創建的:
設定內容居中、居左、居右
使用:---------:居中 使用:----------居左 使用----------:居右
第一列第二列第三列 第一列文本居中 第二列文本居右 第三列文本居左
SmartyPants
SmartyPants將ASCII標點字符轉換為“智能”印刷標點HTML實體。例如:
TYPEASCIIHTML Single backticks 'Isn't this fun?' ‘Isn’t this fun?’ Quotes "Isn't this fun?" “Isn’t this fun?” Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash
創建一個自定義列表
Markdown
Text-to- HTML conversion tool Authors
John Luke
如何創建一個注腳
一個具有注腳的文本。
注釋也是必不可少的
Markdown將文本轉換為 HTML。
KaTeX數學公式
您可以使用渲染LaTeX數學表達式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n ? 1 ) ! ? n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ ( n ) = ( n ? 1 ) ! ? n ∈ N 是通過歐拉積分
Γ ( z ) = ∫ 0 ∞ t z ? 1 e ? t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ ( z ) = ∫ 0 ∞ ? t z ? 1 e ? t d t .
你可以找到更多關于的信息 LaTeX 數學表達式here.
新的甘特圖功能,豐富你的文章
Mon 06 Mon 13 Mon 20 已完成 進行中 計劃一 計劃二 現有任務 Adding GANTT diagram functionality to mermaid
UML 圖表
可以使用UML圖表進行渲染。 Mermaid. 例如下面產生的一個序列圖::
張三 李四 王五 你好!李四, 最近怎么樣? 你最近怎么樣,王五? 我很好,謝謝! 我很好,謝謝! 李四想了很長時間, 文字太長了 不適合放在一行. 打量著王五... 很好... 王五, 你怎么樣? 張三 李四 王五
這將產生一個流程圖。:
鏈接 長方形 圓 圓角長方形 菱形
FLowchart流程圖
我們依舊會支持flowchart的流程圖:
Created with Rapha?l 2.2.0 開始 我的操作 確認? 結束 yes no
關于 Flowchart流程圖 語法,參考 這兒.
導出與導入
導出
如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到 文章導出 ,生成一個.md文件或者.html文件進行本地保存。
導入
如果你想加載一篇你寫過的.md文件或者.html文件,在上方工具欄可以選擇導入功能進行對應擴展名的文件導入, 繼續你的創作。
總結
以上是生活随笔 為你收集整理的@Inheritance 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。