hibernate多對(duì)多映射_處理

          一.hibernate多對(duì)多映射(單項(xiàng)),自動(dòng)產(chǎn)生第三張表

          User--à Role

          user(id,name)    role(id,name)

          User類:

          private int  id;   private String name;  private  Set roles;

           

          Role類:

          private int id;    private String name;

           

          User.hbm.xml中:

          <set name=”roles” table=”t_user_role”>

                 <key column=”userid” />

                 <many-to-many class=”com.Role” column=”roleid” />

          </set>

           

          這樣,hibernate會(huì)自動(dòng)產(chǎn)生中間表t_user_role(userid,roleid) 并且是復(fù)合主鍵,userid為t_user的外鍵,roleid為t_role的外鍵

           

           

          二.hibernate多對(duì)多的存儲(chǔ)

           

          Role r1 = new Role();

          r1.setName(“數(shù)據(jù)錄入人員”);

           

          Role r2 = new Role();

          r2.setName(“商務(wù)主管”);

           

          Role r3 = new Role();

          r3.setName(“大區(qū)經(jīng)理”);

           

           

          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);

           

          結(jié)束之后,在第三張表中也有數(shù)據(jù)

           

           

           

          三.hibernate多對(duì)多的加載

           

          User user = (User)session.load(User.class,1);

          System.out.println(user.getName());

          for(Iterator iter = user.getRoles().iterator();iter.hasNext();){

                 Role role = (Role)iter.next();

                 System.out.println(role.getName());

           

          }

           每次加載都會(huì)發(fā)出sql語(yǔ)句

           

          三.hibernate多對(duì)多的 雙向映射

           

          User ß--.-àRole

          user(id,name)    role(id,name)

          User類:

          private int  id;   private String name;  private Set roles;

           

          Role類:

          private int id;    private String name; private Set users;

           

          User.hbm.xml中:

          <set name=”roles” table=”t_user_role”>

                 <key column=”userid” />

                 <many-to-many class=”com.Role” column=”roleid” />

          </set>

           

          Role.hbm.xml中:

          <set name=”roles” table=”t_user_role”>   //這里可以設(shè)置order-by=”userid”,根據(jù)userid排序

                 <key column=”roleid” />

                 <many-to-many class=”com.User” column=”userid” />

          </set>

           

          注意,上面中間表名字是一樣的

          這樣,hibernate也會(huì)自動(dòng)產(chǎn)生中間表t_user_role(userid,roleid) 并且是復(fù)合主鍵,userid為t_user的外鍵,roleid為t_role的外鍵

           

          posted on 2009-04-06 11:56 胡鵬 閱讀(182) 評(píng)論(0)  編輯  收藏 所屬分類: hibernate

          導(dǎo)航

          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 抚松县| 绥江县| 固阳县| 光泽县| 灵寿县| 庆元县| 娱乐| 长葛市| 淮北市| 长丰县| 上饶县| 博白县| 东明县| 定陶县| 盖州市| 克拉玛依市| 尤溪县| 黄大仙区| 绥江县| 长乐市| 汉沽区| 广丰县| 革吉县| 梅河口市| 同仁县| 桦甸市| 十堰市| 鹤庆县| 银川市| 台州市| 永靖县| 晋城| 丽水市| 江西省| 集贤县| 景东| 葫芦岛市| 宜黄县| 闸北区| 右玉县| 景谷|