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
主站蜘蛛池模板:
久久久久久影院久久久久免费精品国产小说
|
九九久久精品国产免费看小说
|
日韩免费高清一级毛片在线
|
亚洲欧美中文日韩视频
|
亚洲AV成人潮喷综合网
|
eeuss免费天堂影院
|
亚洲欧洲精品久久
|
免费看国产曰批40分钟
|
十八禁在线观看视频播放免费
|
亚洲国产综合专区电影在线
|
成人免费激情视频
|
一级毛片人与动免费观看
|
亚洲AV无码久久精品狠狠爱浪潮
|
18禁男女爽爽爽午夜网站免费
|
丁香婷婷亚洲六月综合色
|
亚洲?V无码成人精品区日韩
|
777爽死你无码免费看一二区
|
在线a亚洲老鸭窝天堂av高清
|
亚洲男人在线无码视频
|
精品无码国产污污污免费网站
|
亚洲AV无码片一区二区三区
|
最近中文字幕mv手机免费高清
|
亚洲黄片手机免费观看
|
亚洲综合中文字幕无线码
|
亚洲日韩一页精品发布
|
美女被免费视频网站a国产
|
四虎影视成人永久免费观看视频
|
亚洲精品无码久久千人斩
|
国产美女无遮挡免费视频网站
|
污视频网站在线观看免费
|
亚洲区视频在线观看
|
国产亚洲一区二区在线观看
|
日本二区免费一片黄2019
|
四虎永久在线观看免费网站网址
|
亚洲AV网一区二区三区
|
亚洲va久久久噜噜噜久久
|
在线免费观看一级毛片
|
免费h片在线观看网址最新
|
最近高清国语中文在线观看免费
|
a毛片免费在线观看
|
羞羞网站免费观看
|