簡體   English   中英

JPA如何知道如何將列和實體與連接表鏈接?

[英]How does JPA knows how to link columns and entities with join-table?

在JPA完全不了解,我得到了:

三個表:

在此處輸入圖片說明

另外,一個orm.xml文件描述了它們之間的關系:

<one-to-manyname="nombreAtributo"fetch=" {LAZY}">
 <join-table schema="NOMBRE_SCHEMA" name = "TABLA1_TABLA2">
      <join-column name="TABLA1_ID" referenced-column-name="ID" unique="true"/>
      <inverse-join-column name="TABLA2_ID" referenced-column-name="ID"/>
  </join-table>

(此代碼段位於其Tabla1實體標簽內)。

好吧。 這個想法是在TABLA1的TABLA2元素上有一個列表,因此我們通過ORM.xml文件“告訴”“嘿,nombreAtributo(在TABLA1中)是通過TABLA1_TABLA2關系進行的結果。TABLA1_ID與ID相關,TABLA2_ID與ID相關。

我明白我的意思是“ TABLA1_ID與TABLA1.ID有關,而TABLA2_ID與TABLA2.ID有關”,但是我不明白JPA是如何知道的。 是為那種關系定義的嗎? 為了名字?

(是的,我們使用的是xml而不是注釋)

全部用JoinTable的javadoc 編寫

注釋類型聯接表

指定關聯的映射。 它應用於關聯的擁有方。

因此,根據下面針對TABLA1實體的xml映射,擁有該關系的實體為TABLA1

<one-to-manyname="nombreAtributo"fetch=" {LAZY}">
 <join-table schema="NOMBRE_SCHEMA" name = "TABLA1_TABLA2">
      <join-column name="TABLA1_ID" referenced-column-name="ID" unique="true"/>
      <inverse-join-column name="TABLA2_ID" referenced-column-name="ID"/>
  </join-table>

joinColumns

(可選)聯接表的外鍵列引用擁有關聯的實體的主表。 (即協會的擁有方)。

因此,連接列TABLA1_ID參考TABLA1的PK,因為TABLA1擁有的關聯。

inverseJoinColumns

(可選)聯接表的外鍵列引用了不擁有關聯的實體的主表。 (即關聯的反面)。

因此,反向連接列TABLA2_ID引用TABLA2的PK,因為TABLA2沒有自己的關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM