hibernate inverse屬性的作用

hibernate配置文件中有這么一個屬性inverse,它是用來指定關聯的控制方的。
inverse屬性默認是false,若為false,則關聯由自己控制,若為true,則關聯
由對方控制。
見例子:

一個Parent有多個Child,一個Child只能有一個Parent。

package com.xian;

public class Child {
?private Long id;
?private String name;
?private Parent parent;

?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 Parent getParent() {
??return parent;
?}

?public void setParent(Parent parent) {
??this.parent = parent;
?}

}


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
?<class name="com.xian.Child" table="child">
??<id name="id" column="childId">
???<generator class="native" />
??</id>
??<property name="name" type="string"></property>
??<many-to-one name="parent" column="parentId" not-null="true">
??</many-to-one>
?</class>
</hibernate-mapping>


package com.xian;

import java.util.HashSet;
import java.util.Set;

public class Parent {
?private Long id;
?private String name;
?private Set children = new HashSet();

?public Long getId() {
??return id;
?}

?private void setId(Long id) {
??this.id = id;
?}

?public String getName() {
??return name;
?}

?public void setName(String name) {
??this.name = name;
?}

?public Set getChildren() {
??return children;
?}

?public void setChildren(Set children) {
??this.children = children;
?}
?
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
?<class name="com.xian.Parent" table="parent">
??<id name="id" column="parentId">
???<generator class="native"></generator>
??</id>
??<property name="name" type="string"></property>
??<set name="children" inverse="true">
??<!-- 此處inverse設置為true,則關聯的控制方交給了child,一對多關聯一般都將控制方交給多端 -->
???<key column="parentId" not-null="true"></key>
???<one-to-many class="com.xian.Child"/>
??</set>
?</class>
</hibernate-mapping>


Parent p = new Parent();
p.setName("parent");
Child c = (Child) session.load(Child.class, 4l);? //原child表中已存在id=4的child
p.getChildren().add(p);??// 我希望用parent端來修改關聯,即將id=4的child的外鍵變為現在這個parent的主鍵值
session.save(p);?//這里保存parent,同時希望關聯也得到修改

但是我們發現parent確實保存了,而child的外鍵還是原值,沒有關聯到我們現在的外鍵
原因就是我們將關聯的控制方交給了child端,這樣一來parent就不能夠控制關聯了。


Parent p = new Parent();
p.setName("parent");
Child c = (Child) session.load(Child.class, 4l);
c.setParent(p);?? //這樣由child端修改關聯就ok了?
session.save(p);

轉載于:https://www.cnblogs.com/baixingqiang/p/5834067.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254531.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254531.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254531.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布式鎖與實現(一)——基于Redis實現

概述 目前幾乎很多大型網站及應用都是分布式部署的&#xff0c;分布式場景中的數據一致性問題一直是一個比較重要的話題。分布式的CAP理論告訴我們“任何一個分布式系統都無法同時滿足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和…

淺析軟件項目管理中十個誤區(來自:http://manager.csdn.net/n/20051213/30907.html)

隨著計算機硬件水平的不斷提高&#xff0c;計算機軟件的規模和復雜度也隨之增加。計算機軟件開發從“個人英雄”時代向團隊時代邁進&#xff0c;計算機軟件項目的管理也從“作坊式”管理向“軟件工廠式”管理邁進。這就要求軟件開發人員特別是軟件項目管理人員更深一步地理解和…

倆孩隨筆

倆孩隨筆 有人給我貼了技術男加奶爸的標簽&#xff0c;不過這兩項都不是我的強項。我深知自己最大的長處在哪&#xff1a;普通&#xff0c;扔人堆里&#xff0c;不是認不出來&#xff0c;而是壓根看不著。想把事情做好&#xff0c;常常會用力過度。工作平平淡淡&#xff0c;需…

Inpainting圖像修復halcon算子,持續更新

目錄harmonic_interpolationinpainting_anisoinpainting_cedinpainting_ctinpainting_mcfinpainting_textureharmonic_interpolation 功能&#xff1a;對一個圖像區域執行諧波插值。 inpainting_aniso 功能&#xff1a;通過各向異性擴散執行圖像修復。 inpainting_ced 功能…

算法(偽代碼)的書寫

q ? Queue&#xff08;隊列&#xff09;, s ? Set&#xff08;集合&#xff09;pq ? PriorityQueue&#xff08;優先隊列&#xff09;d ? distance1. initialization 變量&#xff0c;數據結構的定義&#xff0c;及初始值的賦值&#xff1b;比如著名的 Dijkstra &#xff0…

第八次作業——系統設計與團隊分配(個人)

團隊作業地址&#xff1a;https://www.cnblogs.com/clio-hhhhhhl/p/9079157.html 個人碼云地址&#xff1a;https://gitee.com/Cliohl/events 團隊碼云地址&#xff1a;https://gitee.com/Cliohl/zhuoyue 項目進展&#xff1a; 上禮拜進展&#xff1a;把部分前端頁面實現出來&a…

深入理解Activity啟動流程(二)–Activity啟動相關類的類圖

本文原創作者:Cloud Chou. 歡迎轉載&#xff0c;請注明出處和本文鏈接 本系列博客將詳細闡述Activity的啟動流程&#xff0c;這些博客基于Cm 10.1源碼研究。 在介紹Activity的詳細啟動流程之前&#xff0c;先為大家介紹Activity啟動時涉及到的類&#xff0c;這樣大家可以有大概…

Lines色線halcon算子,持續更新

目錄bandpass_imagelines_colorlines_facetlines_gaussbandpass_image 功能&#xff1a;使用帶通濾波器提取邊緣。 lines_color 功能&#xff1a;檢測色線和它們的寬度。 lines_facet 功能&#xff1a;使用面模型檢測線。 lines_gauss 功能&#xff1a;檢測線和它們的寬…

疑問+軟件

問題 1學好軟件工程需要打好哪些基礎&#xff1f; 2怎樣學好軟件工程&#xff1f; 3軟件工程的發展前景如何&#xff1f; 4軟件工程具體能從事哪些職業&#xff1f; 5怎樣準確的找到自己的定位&#xff1f; 軟件 1支付寶 優點&#xff1a;支付便捷&#xff0c;轉賬方便&#xf…

成功的項目管理

內容提要 第一講 項目與項目管理 1.項目的基本概念 2.項目管理的概念 3.項目管理的重要性 第二講 項目管理的最新發展 1.現代項目管理的創立過程 2.現代項目管理的發展趨勢 3.項目管理流行的原因 第三講 信息時代的項目管理 1.信息時代的特點 2.信息時代項目管理的特點 3.按項目…

5月23日

11.1 LAMP架構介紹一、LAMP架構介紹LAMP是LinuxApache(httpd)MySQLPHP的簡寫&#xff0c;即把Apache、MySQL以及PHP安裝在linux系統上&#xff0c;組成一個運行環境來運行PHP腳本語言&#xff0c;通常是網站。比如Google、淘寶、百度、51cto博客、猿課論壇等就是用PHP語言寫出來…

Kotlin入門簡介

Kotlin的“簡歷” 來自于著名的IDE IntelliJ IDEA(Android Studio基于此開發) 軟件開發公司 JetBrains(位于東歐捷克)起源來自JetBrains的圣彼得堡團隊&#xff0c;名稱取自圣彼得堡附近的一個小島(Kotlin Island)一種基于JVM的靜態類型編程語言語法簡單&#xff0c;不啰嗦 1 2…

LaTeX基礎一:安裝與基本操作

一、安裝 1.首先下載texlive2015.iso文件。再在解壓的鏡像文件中運行install-tl-advanced.bat批處理命令。注意要關閉殺毒軟件&#xff0c;否則可能會出現錯誤。2.可以修改一下安裝路徑&#xff0c;只要更改一個&#xff0c;其他也隨之更改&#xff1a;3.把不要安裝的語言包去掉…

Match圖像匹配halcon算子,持續更新

目錄exhaustive_matchexhaustive_match_mggen_gauss_pyramidmonotonyexhaustive_match 功能&#xff1a;模板和圖像的匹配。 exhaustive_match_mg 功能&#xff1a;在一個分辨率塔式結構中匹配模板和圖像。 gen_gauss_pyramid 功能&#xff1a;計算一個高斯金字塔。 mono…

c++虛函數的前奏--函數指針與回調

聲明函數指針并實現回調程序員常常需要實現回調。本文將討論函數指針的基本原則并說明如何使用函數指針實現回調。注意這里針對的是普通的函數&#xff0c;不包括完全依賴于不同語法和語義規則的類成員函數&#xff08;類成員指針將在另文中討論&#xff09;。 聲明函數指針 …

你的微信,到底「連接」多少人?

作為一個技術人&#xff0c;用微信這么多年&#xff0c;也加了不少的好友和技術群。大半個月前&#xff0c;大概是5月初的時候&#xff0c;萌生了這個想法。 前后磕磕絆絆&#xff0c;經過了來美帝出差前期差點餓死、項目緊急期等艱難階段以及各種自學、溫習和設計&#xff0c;…

團隊項目第一周總結

團隊項目第一周總結 今天是周一&#xff0c;項目的進展周期已經進行了一周&#xff0c;做一個大概的總結吧。 周的工作先是定下團隊的項目方向&#xff0c;大家技術程度各有不同&#xff0c;因此想大一統的定下一個有些稍稍的花費時間。定好《基于大數據的日志分析》這個題目后…

電路寬度測量halcon例子

一個halcon處理的例子 目錄處理要求&#xff1a;原圖&#xff1a;處理程序&#xff1a;處理結果&#xff1a;處理要求&#xff1a; 根據客戶給的寬度&#xff0c;計算出電路寬度太窄的為NG 原圖&#xff1a; 處理程序&#xff1a; read_image (Image, 1.png) rgb1_to_gray(I…

深入理解C/C++函數指針

函數指針數組的妙用 筆者在開發某軟件過程中遇到這樣一個問題&#xff0c;前級模塊傳給我二進制數據&#xff0c;輸入參數為 char* buffer和 int length&#xff0c;buffer是數據的首地址&#xff0c;length表示這批數據的長度。數據的特點是&#xff1a;長度不定&#xff0c…

iOS顯示性能優化過程講解

點我跳轉原文地址 卡頓的原理 iOS系統界面滑動流暢性的保持主要是依靠CPU和GPU兩大處理硬件間通力合作的結果&#xff0c;一個視圖的顯示需要先經過CPU創建、布局計算、對圖片解碼、文本繪制&#xff0c;然后CPU將計算的結果交給GPU&#xff0c;GPU可能需要對圖形進行變換、合成…