hibernate多對多映射_處理
一.hibernate多對多映射(單項),自動產生第三張表
User--à Role
user(id,name)
User類:
private int
Role類:
private int id;
User.hbm.xml中:
<set name=”roles” table=”t_user_role”>
</set>
這樣,hibernate會自動產生中間表t_user_role(userid,roleid) 并且是復合主鍵,userid為t_user的外鍵,roleid為t_role的外鍵
二.hibernate多對多的存儲
Role r1 = new Role();
r1.setName(“數據錄入人員”);
Role r2 = new Role();
r2.setName(“商務主管”);
Role r3 = new Role();
r3.setName(“大區經理”);
User u1 = new User();
u1.setName(“10”);
Set u1Roles = new HashSet();
u1Roles.add(r1);
u1Roles.add(r2);
u1.setRoles(u1Roles);
User u2 = new User();
u1.setName(“祖兒”);
Set u2Roles = new HashSet();
u2Roles.add(r2);
u2Roles.add(r3);
u2.setRoles(u2Roles);
User u3 = new User();
u3.setName(“杰倫”);
Set u3Roles = new HashSet();
u3Roles.add(r1);
u3Roles.add(r2);
u3Roles.add(r3);
u3.setRoles(u3Roles);
session.save(r1);
session.save(r2);
session.save(r3);
session.save(u1);
session.save(u2);
session.save(u3);
結束之后,在第三張表中也有數據
三.hibernate多對多的加載
User user = (User)session.load(User.class,1);
System.out.println(user.getName());
for(Iterator iter = user.getRoles().iterator();iter.hasNext();){
}
三.hibernate多對多的 雙向映射
User ß--.-àRole
user(id,name)
User類:
private int
Role類:
private int id;
User.hbm.xml中:
<set name=”roles” table=”t_user_role”>
</set>
Role.hbm.xml中:
<set name=”roles” table=”t_user_role”>
</set>
注意,上面中間表名字是一樣的
這樣,hibernate也會自動產生中間表t_user_role(userid,roleid) 并且是復合主鍵,userid為t_user的外鍵,roleid為t_role的外鍵
posted on 2009-04-06 11:56 胡鵬 閱讀(1155) 評論(0) 編輯 收藏 所屬分類: hibernate