hibernate的多對多對映

2021-08-29 06:23:43 字數 975 閱讀 4189

平時工作中雖然也經常提到多對多的對映,但是在實際操作中運用到還是第一次.

組group和角色role,多對多的對映.

role的對映檔案

[code]

start with 1000

[/code]

group的對映檔案:

[code]

start with 1000

[/code]

頁面支援雙向操作,即可在角色中新增刪除組,也可在組中新增刪除角色.

在組中新增角色:

[code]

public void addgrouproles(long groupid, listroleids)

group.getroles().addall(roles);

this.commondao.store(group);

}[/code]

組內刪除角色:

[code]

public void removegrouproles(long groupid, listroleids)

group.getroles().removeall(roles);

this.commondao.store(group);

}[/code]

執行以上操作後,程式在移除組的角色的時候,同時將角色以及組本身都刪除掉了.

如果將對映檔案改為:

[code]

以及[/code]

以上配置下,可以正常進行相關的新增刪除操作.直接將cascade="delete"去掉,同樣可以正常操作.

覺得很納悶,程式中只是將角色從組中移除,而不是刪除角色這個物件.操作過程中應該是將中間表group_role中的記錄刪除,但是最後卻連帶把group和role的記錄也刪除了.

和同事討論這種現象,同事分析說hibernate在all-delete-orphan情況下,在刪除中間表的時候,會判斷相關聯的物件是否是"孤兒",如果是"孤兒"也會將相關的物件同時刪除.

hibernate高階 多對多對映

前面學習了一對多對映,對hibernate的配置有一定大了解,在實際開發中還有一種對映關係就是多對多對映,比如乙個公司中開發人員和專案之間就是多對多的關係,乙個開發人員可以同時參與幾個專案,當然乙個專案可以有多個人員參與。首先就是在資料庫中建立三張表,除了本來的雇員表和專案表外,另外一張表來儲存兩者...

Hibernate中使用註解對映多對多

在hibernate中,通常配置物件關係對映關係有兩種,一種是基於xml的方式,另一種是基於annotation的註解方式表 create table t rights id number 5 name varchar2 50 constraint t rights name uk unique c...

Hibernate對映多對多雙向關聯關係(小案例)

多對多雙向關聯關係 project 工程 emp 員工 為案例 步驟如下 1 建立project類,並需要定義集合型別的emp屬性 public class project public void setpid integer pid public string getpname public vo...