下午動手配了下一個簡單的雙向一對多關係
一下子居然想不起invers跟cascade的區別了
看了網上那些東西覺得更迷茫了
說invers是維護2個表之間的關係的
但是cascade也是2個表的級聯操作
咋一看覺得沒區別
後面慢慢想明白了
invers應該是隻維護表跟表的關係
跟實際數據操作沒關係
而cascade是指跟數據的實際操作有關係 跟表結構沒關係
說通俗點就是 比如我有 user 跟 order2個對象是一對多關係
<set name="orders" lazy="true" inverse="true">
<key column="user_id" not-null="true"/>
<one-to-many class="Order" />
</set>
<many-to-one name="user" column="user_id" />
如果在user這端不設置invers=true
order是多的一端 many-to-one默認invers=flase
那麼就會報錯
因爲這樣2邊都要維護關係
相當於在對應到表的時候
2端都要在order表中新建一個user_id字段
這樣數據庫就會報錯
所以要其中一方交出控制權 要麼是1的一方invers=true
要麼是多的一方設置insert跟update都是false
而cascade只管你的實際數據的那些級聯操作
對錶關係沒影響
按我的理解簡單點說:invers是維護表關係 cascade是維護數據操作之間的關係。
不知道這理解有沒有問題 有問題請大家提出來