」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > `MappedBy` 如何促進 JPA 和 Hibernate 中的雙向關係?

`MappedBy` 如何促進 JPA 和 Hibernate 中的雙向關係?

發佈於2024-11-17
瀏覽:288

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

了解JPA 和Hibernate 中的MappedBy

在JPA 和Hibernate 等物件關係映射(ORM) 框架中,MappedBy 是一個有用的註釋在實體類別之間建立雙向關係。此註解用於一對多和多對一關係的上下文中。

推薦用法

MappedBy的建議用法如下:

  • 一對多關係: 在一對多關係中,「多」方關係(具有集合的一側)應該具有MappedBy 註釋。此註記指定保存外鍵約束的關係的「一」側欄位的名稱。
  • 多對一關係: 在多對一關係中關係中,關係的「一」側(具有單一引用對象的一側)應具有 MappedBy 註釋。此註解指定關係的「多」方中保存外鍵約束的欄位的名稱。

MappedBy

MappedBy 的用途幾個目的:

  • 雙向遍歷: 在雙向關係中,MappedBy 允許您雙向遍歷關係,而無需在兩個表中明確外鍵定義。
  • 優化: 透過指定關係的所有權,MappedBy 可以透過避免不必要的聯接來優化資料庫效能表或外鍵約束。

範例

在您提供的範例中,航空公司擁有許多AirlineFlights 和屬於同一航空的AirlineFlights,MappedBy 應在AirlineFlight 類別中使用,如下圖所示:

@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}

在此範例中,@MapsId 註解指示 AirlineFlight 中的 IDAIRLINE 欄位用作 Airline 實體的外鍵約束。透過在這裡使用 MappedBy,您可以在 Airline 和 AirlineFlight 之間建立雙向關係,而不需要兩個表中的外鍵約束。

最新教學 更多>
  • 如何使用Regex在PHP中有效地提取括號內的文本
    如何使用Regex在PHP中有效地提取括號內的文本
    php:在括號內提取文本在處理括號內的文本時,找到最有效的解決方案是必不可少的。一種方法是利用PHP的字符串操作函數,如下所示: 作為替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式來搜索特...
    程式設計 發佈於2025-03-13
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-03-13
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    程式設計 發佈於2025-03-13
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-03-13
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-03-13
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    答案: 在大多數現代編譯器中,while(1)和(1)和(;;)之間沒有性能差異。編譯器: perl: 1 輸入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    程式設計 發佈於2025-03-13
  • 在多版本Java環境下如何為Maven指定特定版本?
    在多版本Java環境下如何為Maven指定特定版本?
    為maven 指定Java版本,您有多個Java版本,您需要在系統上安裝多個Java版本,並且需要配置特定的特定版本(E. e..7)。但是,儘管有Java_Home參數。 java_home =“ c:\ program文件\ java \ jdk1.7.0” mvn ...Once Mave...
    程式設計 發佈於2025-03-13
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-03-13
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, AttributeError: SomeClass...
    程式設計 發佈於2025-03-13
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-03-13
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-03-13
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-03-13
  • 如何使用Glob在子文件夾中搜索特定文件?
    如何使用Glob在子文件夾中搜索特定文件?
    搜索散佈在不同文件夾和子文件夾中的大量文件可能是一項艱鉅的任務。但是,PHP的Glob函數提供了一個多功能解決方案來應對這一挑戰。 最初的嘗試使用Glob在根目錄中搜索搜索。要將其覆蓋範圍擴展到根之外,請考慮以下兩種方法: 1。帶有rglob函數的遞歸環球: RGLOB函數通過啟用遞歸搜索來增強G...
    程式設計 發佈於2025-03-13
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-03-13
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符在postgresql中提取最後一行,您可能需要遇到與數據集合中每個不同標識的信息相關的信息。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: id dat...
    程式設計 發佈於2025-03-13

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3