hibernate多對多關聯對映

2022-08-20 09:00:12 字數 3715 閱讀 6702

對映原理:

不論是單項關聯還是雙向關聯都是通過第三張表,將兩個表中的主鍵放到第三個表中做乙個關聯。用第三張表來解決可能會造成資料冗餘的問題。

舉例:

乙個使用者(user)對多個角色(role),乙個角色對多個使用者。

分類:

一、單項的多對多關聯對映(單向user--->role)

物件模型

關係模型

例項

下面我們看一下實體類和對映檔案的**。

user

public class user
role

public class role
user.hbm.xml

xml version="1.0"

?>

>

<

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

>

>

role.hbm.xml

xml version="1.0"

?>

>

<

package

="com.liang.hibernate"

>

<

class

name

="role"

table

="t_role"

>

<

id name

="id"

>

<

generator

class

="native"

>

generator

>

id>

<

property

name

="name"

>

property

>

class

>

>

多對多關聯對映,在實體類中,跟一對多關聯對映一樣,也是用集合來表示的。標籤中用table屬性重新命名中間表名稱,標籤定義當前表的主鍵,用標籤來關聯另一張表。

下面我們看一下實體類和對映檔案的**。

user同上

role

public class role
user.hbm.xml

xml version="1.0"

?>

>

<

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

>

>

role.hbm.xml

xml version="1.0"

?>

>

<

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

>

>

多對多雙向關係中,user和role的對映檔案相同,值得注意的是生成的中間表名稱必須一樣,生成中間表的字段必須一樣。

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...