Hibernate的多對多關係查詢

2021-08-19 22:48:37 字數 2707 閱讀 6799

多對多的條件

需求:通過id查詢使用者的資訊,同時查詢使用者對應的角色的資訊。(先查詢本表需要查詢的id的資訊)

select * from sys_user u where u.user_id=5;

使用者對應的角色的資訊。(通過查詢出來的外來鍵字段去中間表查詢對應的外來鍵)

通過中間表的對映關係找到了角色id為 4,5(通過中間表查詢出來的外來鍵去對應關聯的表查詢資訊)

select * from sys_role s where s.role_id in(4,5);

實現這個操作必須做兩個步驟:

建立乙個可以儲存多個表資料的實體類,user實體配置多對多的關係

//使用者和角色是多對多的關係

//意味著乙個使用者可以有多個角色,那麼使用集合set接收角色的資訊

private setroles=new hashset();

public setgetroles()

public

void

setroles(setroles)

將查詢的多個表的資料封裝這個實體累的物件裡面,通過配置來說實現。多對多配置

name="roles"

table="sys_user_role">

column="user_id">

key>

class="com.entity.role"

column="role_id">

many-to-many>

set>

entity實體類

user

public

class user

public

void

setroles(setroles)

get()/set()......

}

role

public

class role

public

void

setusers(setusers)

get()/set()......

}

配置檔案

user.hbm.xml

<?xml version="1.0" encoding="utf-8"?>

name="com.entity.user"

table="sys_user">

name="userid"

column="user_id">

class="identity">

generator>

id>

name="usercode"

column="user_code">

property>

name="username"

column="user_name">

property>

name="userpassword"

column="user_password">

property>

name="userstate"

column="user_state">

property>

name="roles"

table="sys_user_role">

column="user_id">

key>

class="com.entity.role"

column="role_id">

many-to-many>

set>

class>

role.hbm.xml

<?xml version="1.0" encoding="utf-8"?>

name="com.entity.role"

table="sys_role">

name="roleid"

column="role_id">

class="identity">

generator>

id>

name="rolename"

column="role_name">

property>

name="rolememo"

column="role_memo">

property>

name="users"

table="sys_user_role">

column="role_id">

key>

class="com.entity.user"

column="user_id">

many-to-many>

set>

class>

測試方法
//需求:通過id查詢使用者的資訊,同時查詢使用者對應的角色的資訊。

@test

public

void

get()

//6.關閉連線

session.close();

}

hibernate 多對多關係(一)

什麼是多對多關係呢?關聯式資料庫中兩個表之間的一種關係,該關係中第乙個表中的乙個行可以與第二個表中的乙個或多個行相關。第二個表中的乙個行也可以與第乙個表中的乙個或多個行相關。比如在常見的訂單管理資料庫當中 產品 表和 訂單 表之間的關係。單個訂單中可以包含多個產品。另一方面,乙個產品可能出現在多個訂...

Hibernate多對多關聯關係

今天遇到乙個問題 有乙個的類reckoning,乙個類accountitem。這兩個類之間的關係時多對多的關聯關係。一開始是由accountitem來維護關聯關係的,也就是reckoning.hbm.xml檔案中的如下 將inverse的值設為true.set name accountitems t...

Hibernate多對多關係對映

兩張表的多對多關係,在資料庫中通常是通過第三張中間表來實現的,第三張中間表放的是兩張表各自的主鍵值,通過主鍵與主鍵的對應來體現表直接的關係。比如在許可權系統中,乙個使用者可以擁有多種許可權,而一種許可權也可以授予多個使用者。在持久化物件設計的時候,角色和使用者都分別有乙個集合來防止擁有它的使用者或角...