Hibernate關聯關系筆記
* 有連接表:在N方使用<join>/<many-to-one>。1方無需配置與之關聯的持久化類。
* 沒有連接表:在N方使用<many-to-one>。1方無需配置與之關聯的持久化類。
* 有連接表: 在1方使用<set>/<many-to-many>,在many-to-many中將unique屬性設置為true。 N方無需配置與之關聯的持久化類。
* 沒有連接表:在1方使用<set>/<one-to-many>。N方無需配置與之關聯的持久化類。
注:cascade屬性在<set>上配置
* 有連接表:1方使用<set>/<many-to-many>并設置<many-to-many>的unique參數為true。N方使用<join>/<many-to-one>
* 沒有連接表:1方使用<set>/<one-to-many>。N方使用<many-to-one>
注:只能在1的一方使用inverse放棄控制權,N的一方無法放棄控制權,因為沒有inverse屬性。
控制端使用<set>/<many-to-many>
兩邊都使用<set>/<many-to-many>
* 基于外鍵:控制端使用<many-to-one>,并設置<many-to-one>的unique屬性為true。
* 基于主鍵:控制端設置ID生成策略為foreign,并使用<one-to-one>標簽。
* 基于連接表:控制端使用<join>/<many-to-one>,并設置<many-to-one>的unique屬性為true
* 基于外鍵:一方使用<many-to-one>并設置其unique參數為true。另一方使用<one-to-one>
* 基于主鍵:一方設置ID生成策略為foreign,并使用<one-to-one>標簽。另一方只使用<one-to-one>標簽。
* 基于連接表:兩邊都使用<join>/<many-to-one>。并都設置<join>下的<key>unique屬性和<many-to-one>的unique屬性為true。而且兩邊需要有一邊設置inverse參數為true,即放棄控制權。
新聞熱點
疑難解答