對映原理:
不論是單項關聯還是雙向關聯都是通過第三張表,將兩個表中的主鍵放到第三個表中做乙個關聯。用第三張表來解決可能會造成資料冗餘的問題。
舉例:
乙個使用者(user)對多個角色(role),乙個角色對多個使用者。
分類:
一、單項的多對多關聯對映(單向user--->role)
物件模型
關係模型
例項
下面我們看一下實體類和對映檔案的**。
user
public class userrole
public class roleuser.hbm.xml
xml version="1.0"role.hbm.xml?>
>
<
package
="com.liang.hibernate"
>
<
class
name
="user"
table
="t_user"
>
<
id name
="id"
>
<
generator
class
="native"
>
generator
>
id>
<
property
name
="name"
>
property
>
<
set
name
="roles"
table
="t_user_role"
>
<
key
column
="user_id"
>
key>
<
many-to-many
class
="role"
column
="role_id"
>
many-to-many
>
set>
class
>
>
xml version="1.0"多對多關聯對映,在實體類中,跟一對多關聯對映一樣,也是用集合來表示的。標籤中用table屬性重新命名中間表名稱,標籤定義當前表的主鍵,用標籤來關聯另一張表。?>
>
<
package
="com.liang.hibernate"
>
<
class
name
="role"
table
="t_role"
>
<
id name
="id"
>
<
generator
class
="native"
>
generator
>
id>
<
property
name
="name"
>
property
>
class
>
>
下面我們看一下實體類和對映檔案的**。
user同上
role
public class roleuser.hbm.xml
xml version="1.0"role.hbm.xml?>
>
<
package
="com.liang.hibernate"
>
<
class
name
="user"
table
="t_user"
>
<
id name
="id"
>
<
generator
class
="native"
>
generator
>
id>
<
property
name
="name"
>
property
>
<
set
name
="roles"
table
="t_user_role"
>
<
key
column
="user_id"
>
key>
<
many-to-many
class
="role"
column
="role_id"
>
many-to-many
>
set>
class
>
>
xml version="1.0"多對多雙向關係中,user和role的對映檔案相同,值得注意的是生成的中間表名稱必須一樣,生成中間表的字段必須一樣。?>
>
<
package
="com.liang.hibernate"
>
<
class
name
="role"
table
="t_role"
>
<
id name
="id"
>
<
generator
class
="native"
>
generator
>
id>
<
property
name
="name"
>
property
>
<
set
name
="users"
table
="t_user_role"
>
<
key
column
="role_id"
>
key>
<
many-to-many
class
="user"
column
="user_id"
>
many-to-many
>
set>
class
>
>
hibernate多對多關聯
一 配置雙向多對多關聯 以project類 專案 和emp類 員工 為例 1 建立project類,並需要定義集合型別的emp屬性 public class project public void setpid integer pid public string getpname public vo...
Hibernate多對多關聯關係
今天遇到乙個問題 有乙個的類reckoning,乙個類accountitem。這兩個類之間的關係時多對多的關聯關係。一開始是由accountitem來維護關聯關係的,也就是reckoning.hbm.xml檔案中的如下 將inverse的值設為true.set name accountitems t...
Hibernate雙向多對多關聯
一 配置雙向多對多關聯 以project類 專案 和emp類 員工 為例 1 建立project類,並需要定義集合型別的emp屬性 public class project public void setpid integer pid public string getpname public vo...