apple0668
TDD,Agile,Scrum,Core Java,J2EE,Investment Blank
BlogJava
首頁
新隨筆
聚合
管理
隨筆-61 評論-159 文章-0 trackbacks-0
系統學習hibernate之八:多對多關聯映射(單向)
hibernate中多對多關聯映射(單向),中間需要加入一個表來維護這種多對多關聯關系。
例子:
具體映射方式:
<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/>
</set>
1、User的POJO類
1
import
java.util.Set;
2
3
public
class
User
{
4
5
private
int
id;
6
7
private
String name;
8
9
private
Set roles;
10
//
省略setter、getter方法
11
}
2、Role的POJO類
1
public
class
Role
{
2
3
private
int
id;
4
5
private
String name;
6
//
省略setter、getter方法
7
}
3、User的映射文件User.hbm.xml
1
<?
xml version="1.0"
?>
2
<!
DOCTYPE hibernate-mapping PUBLIC
3
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
5
<
hibernate-mapping
>
6
<
class
name
="org.apple.hibernate.User"
table
="t_user"
>
7
<
id
name
="id"
>
8
<
generator
class
="native"
/>
9
</
id
>
10
<
property
name
="name"
/>
11
<
set
name
="roles"
table
="t_user_role"
>
12
<
key
column
="userid"
/>
13
<
many-to-many
column
="roleid"
class
="org.apple.hibernate.Role"
/>
14
</
set
>
15
</
class
>
16
</
hibernate-mapping
>
4、Role的映射文件Role.hbm.xml
1
<?
xml version="1.0"
?>
2
<!
DOCTYPE hibernate-mapping PUBLIC
3
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
5
<
hibernate-mapping
>
6
<
class
name
="org.apple.hibernate.Role"
table
="t_role"
>
7
<
id
name
="id"
>
8
<
generator
class
="native"
/>
9
</
id
>
10
<
property
name
="name"
/>
11
</
class
>
12
</
hibernate-mapping
>
5、測試保存數據方法:
1
public
void
testSave()
2
{
3
Session session
=
null
;
4
try
{
5
session
=
HibernateUtil.getSession();
6
session.beginTransaction();
7
Role role1
=
new
Role();
8
role1.setName(
"
CEO
"
);
9
session.save(role1);
10
Role role2
=
new
Role();
11
role2.setName(
"
總經理
"
);
12
session.save(role2);
13
Role role3
=
new
Role();
14
role3.setName(
"
項目經理
"
);
15
session.save(role3);
16
User user1
=
new
User();
17
user1.setName(
"
張三
"
);
18
Set user1role
=
new
HashSet();
19
user1role.add(role1);
20
user1role.add(role2);
21
user1role.add(role3);
22
user1.setRoles(user1role);
23
24
User user2
=
new
User();
25
user2.setName(
"
李四
"
);
26
Set user2role
=
new
HashSet();
27
user2role.add(role1);
28
user2role.add(role2);
29
user2.setRoles(user2role);
30
session.save(user1);
31
session.save(user2);
32
session.beginTransaction().commit();
33
34
35
}
catch
(Exception e)
{
36
e.printStackTrace();
37
session.beginTransaction().rollback();
38
39
}
finally
{
40
session.close();
41
}
42
}
PS:由于t_user_role中的字段都是參照t_user中的id和t_role的id,因此不用調用session.save(role)方法。
數據庫表數據:
mysql> select *from t_user_role;
+--------+--------+
| userid | roleid |
+--------+--------+
| 1 | 1 |
| 2 | 1 |
| 1 | 2 |
| 2 | 2 |
| 1 | 3 |
mysql> select *from t_user;
+----+------+
| id | name |
+----+------+
| 1 | 張三 |
| 2 | 李四 |
+----+------+
mysql> select *from t_role;
+----+----------+
| id | name |
+----+----------+
| 1 | CEO |
| 2 | 總經理 |
| 3 | 項目經理 |
+----+----------+
6、測試查詢方法:
1
public
void
testLoad1()
2
{
3
Session session
=
null
;
4
try
{
5
session
=
HibernateUtil.getSession();
6
session.beginTransaction();
7
8
session.beginTransaction().commit();
9
User user
=
(User)session.load(User.
class
,
1
);
10
System.out.println(
"
user.name=
"
+
user.getName());
11
for
(Iterator it
=
user.getRoles().iterator();it.hasNext();)
12
{
13
Role role
=
(Role)it.next();
14
System.out.println(
"
role.name=
"
+
role.getName());
15
}
16
17
18
}
catch
(Exception e)
{
19
e.printStackTrace();
20
session.beginTransaction().rollback();
21
22
}
finally
{
23
session.close();
24
}
25
}
26
查詢結果:
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_ from t_user user0_ where user0_.id=?
user.name=張三
Hibernate: select roles0_.userid as userid1_, roles0_.roleid as roleid1_, role1_.id as id2_0_, role1_.name as name2_0_ from t_user_role roles0_ left outer join t_role role1_ on roles0_.roleid=role1_.id where roles0_.userid=?
role.name=總經理
role.name=項目經理
role.name=CEO
PS:由于一個人可能有多個角色,要把一個人對應的角色迭代出來。
-------------------------------------------------------------------------------------------------
PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必
注明作者
和
文章的詳細出處地址
,否則不允許轉載,多謝合作!
posted on 2008-10-12 21:59
apple0668
閱讀(760)
評論(0)
編輯
收藏
所屬分類:
hibernate
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
系統學習hibernate之十五:hibernate一級緩存
系統學習hibernate之十四:hibernate中HQL查詢語言(二)
系統學習hibernate之十三:hibernate中HQL查詢語言(一)
系統學習hibernate之十二:hibernate中悲觀鎖和樂觀鎖
系統學習hibernate之十一:set、list、map、array集合
系統學習hibernate之十:Component映射
系統學習hibernate之九:多對多關聯映射(雙向)
系統學習hibernate之八:多對多關聯映射(單向)
系統學習hibernate之七:一對多單向關聯
系統學習hibernate之六:一對一外鍵關聯映射雙向關聯
Email:
chensp1230@163.com
歡迎交流
框架是告訴人們不該去做什么,而不是告訴人們該去做什么;容器是告訴人們該去做什么,而不是告訴人們不該去做什么!
<
2008年10月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
留言簿
(10)
給我留言
查看公開留言
查看私人留言
我參與的團隊
深圳Java俱樂部(0/0)
Netbeans 愛好者(0/0)
隨筆分類
(63)
Aglets(1)
drools(2)
eclipse(6)
groovy
hibernate(17)
java(7)
jboss
junit(3)
Log4(2)
MongoDB(1)
oracle(1)
spring(4)
struts2(8)
svn(1)
tomcat(4)
webwork(4)
web報表(1)
xml
心情港灣
集群(1)
隨筆檔案
(61)
2015年3月 (1)
2012年7月 (1)
2012年4月 (1)
2011年5月 (3)
2010年1月 (2)
2009年3月 (1)
2008年12月 (2)
2008年11月 (5)
2008年10月 (16)
2008年9月 (1)
2008年4月 (1)
2008年1月 (2)
2007年11月 (2)
2007年10月 (15)
2007年9月 (8)
友情鏈接
開源在線手冊
最新隨筆
1.?Ehcache集群方案
2.?MongoDB安裝手記
3.?任何人都可以重構<轉載>
4.?JDK6中JWS自帶webservice應用
5.?解決:Eclipse啟動tomcat 訪問不了 手動啟動可以訪問
6.?IntelliJ Idea10 常用快捷鍵
7.?Drools語法詳解<轉>
8.?eclipse3.4安裝drools插件手記
9.?Java日期時間運算
10.?java中使用功能強悍的正則表達式
搜索
最新評論
1.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
非常感謝樓主分享,解決問題, Tomcat 7.0.59
--Gozs
2.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記[未登錄]
正解
--gao
3.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
@123
已解決,謝謝提示myeclipse相關的有用信息~~
--sequoah
4.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
贊 清空work文件夾就可以了
--維尼
5.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
很好 問題解決了!
--兔兔
閱讀排行榜
1.?Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記(85541)
2.?系統學習hibernate之一:利用hibernate中的SchemaExport生成數據表(18641)
3.?eclipse的第一個struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2(15692)
4.?Subversion之路---實現精細的目錄訪問權限控制<轉>(11308)
5.?IntelliJ Idea10 常用快捷鍵(9320)
評論排行榜
1.?Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記(62)
2.?eclipse的第一個struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2(32)
3.?Tomcat啟動端口被占用異常處理(9)
4.?升級瑞星防火墻2008后,在myeclipse6.0中啟動tomcat遇到怪問題!(7)
5.?JDK6中JWS自帶webservice應用(6)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 apple0668
主站蜘蛛池模板:
亚洲日韩中文字幕一区
|
亚洲欧洲国产精品你懂的
|
亚洲熟女综合一区二区三区
|
免费人成在线观看69式小视频
|
亚洲欧洲免费视频
|
亚洲免费视频播放
|
亚洲人成综合在线播放
|
巨胸喷奶水视频www网免费
|
亚洲а∨天堂久久精品9966
|
天天看免费高清影视
|
妇女自拍偷自拍亚洲精品
|
亚洲国产午夜福利在线播放
|
久久久久久久久久免免费精品
|
亚洲韩国精品无码一区二区三区
|
成全视频高清免费观看电视剧
|
久久精品国产亚洲av麻
|
99精品一区二区免费视频
|
亚洲六月丁香六月婷婷色伊人
|
好吊妞在线新免费视频
|
青青青视频免费观看
|
亚洲av无码专区国产乱码在线观看
|
久久精品无码专区免费东京热
|
亚洲丰满熟女一区二区v
|
黄a大片av永久免费
|
国产精品成人69XXX免费视频
|
亚洲成人激情在线
|
91网站免费观看
|
美女裸免费观看网站
|
亚洲精品V欧洲精品V日韩精品
|
亚洲一区无码中文字幕乱码
|
成年女人视频网站免费m
|
一级午夜免费视频
|
亚洲三级电影网址
|
免费特级黄毛片在线成人观看
|
国产99久久久国产精免费
|
亚洲日本香蕉视频观看视频
|
国产免费小视频在线观看
|
美丽的姑娘免费观看在线播放
|
亚洲va久久久久
|
国产亚洲人成网站在线观看
|
免费h片在线观看网址最新
|