溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請(qǐng)您在轉(zhuǎn)載時(shí)注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請(qǐng)您在轉(zhuǎn)載時(shí)注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

          Role.java
          package com.many2many.bean;

          import java.util.Set;

          import javax.persistence.CascadeType;
          import javax.persistence.Column;
          import javax.persistence.Entity;
          import javax.persistence.GeneratedValue;
          import javax.persistence.GenerationType;
          import javax.persistence.Id;
          import javax.persistence.ManyToMany;
          import javax.persistence.Table;

          @Entity
          @Table(name
          ="roles",catalog="Hibernate_Many2Many")
          public class Role {
              
              
          private int id;
              
          private String name;
              
          private Set<User> users;
              @Id
              @Column(name
          ="id")
              @GeneratedValue(strategy
          =GenerationType.AUTO)
              
          public int getId() {
                  
          return id;
              }
              
          public void setId(int id) {
                  
          this.id = id;
              }
              @Column(name
          ="name")
              
          public String getName() {
                  
          return name;
              }
              
          public void setName(String name) {
                  
          this.name = name;
              }
              @ManyToMany(mappedBy
          ="roles",cascade=CascadeType.ALL)
              
          public Set<User> getUsers() {
                  
          return users;
              }
              
          public void setUsers(Set<User> users) {
                  
          this.users = users;
              }
              
          }
          User.java
          package com.many2many.bean;

          import java.util.Set;

          import javax.persistence.CascadeType;
          import javax.persistence.Column;
          import javax.persistence.Entity;
          import javax.persistence.GeneratedValue;
          import javax.persistence.GenerationType;
          import javax.persistence.Id;
          import javax.persistence.JoinColumn;
          import javax.persistence.JoinTable;
          import javax.persistence.ManyToMany;
          import javax.persistence.Table;

          @Entity
          @Table(name
          ="users",catalog="Hibernate_Many2Many")
          public class User {
              
              
          private int id;
              
          private String name;
              
          private Set<Role> roles;
              @Id
              @Column(name
          ="id")
              @GeneratedValue(strategy
          =GenerationType.AUTO)
              
          public int getId() {
                  
          return id;
              }
              
          public void setId(int id) {
                  
          this.id = id;
              }
              @Column(name
          ="name")
              
          public String getName() {
                  
          return name;
              }
              
          public void setName(String name) {
                  
          this.name = name;
              }
              @ManyToMany(cascade
          =CascadeType.ALL)
              @JoinTable(
                      name
          ="user_role",
                      joinColumns
          =@JoinColumn(name="user_id"),
                      inverseJoinColumns
          =@JoinColumn(name="role_id")
              )
              
          public Set<Role> getRoles() {
                  
          return roles;
              }
              
          public void setRoles(Set<Role> roles) {
                  
          this.roles = roles;
              }
              
          }
          導(dǎo)出的sql
          create table Hibernate_Many2Many.roles (
                  id 
          integer not null auto_increment,
                  name 
          varchar(255),
                  
          primary key (id)
              )

              
          create table Hibernate_Many2Many.users (
                  id 
          integer not null auto_increment,
                  name 
          varchar(255),
                  
          primary key (id)
              )

              
          create table user_role (
                  
          user_id integer not null,
                  role_id 
          integer not null,
                  
          primary key (user_id, role_id)
              )

              
          alter table user_role 
                  
          add index FK143BF46ADA6B394F (role_id), 
                  
          add constraint FK143BF46ADA6B394F 
                  
          foreign key (role_id) 
                  
          references Hibernate_Many2Many.roles (id)

              
          alter table user_role 
                  
          add index FK143BF46A7F95FD2F (user_id), 
                  
          add constraint FK143BF46A7F95FD2F 
                  
          foreign key (user_id
                  
          references Hibernate_Many2Many.users (id)

          測(cè)試代碼
          @Test
              
          public void insert(){
                  Session session
          =HibernateSessionFactory.getSession();
                  Transaction transaction
          =session.beginTransaction();
                  
          try {
                      transaction.begin();
                      User user
          =new User();
                      user.setName(
          "張三");
                      
                      Role role
          =new Role();
                      role.setName(
          "管理員");
                      Set
          <Role> roles=new HashSet<Role>();
                      roles.add(role);
                      user.setRoles(roles);
                      
                      session.persist(user);
                      
                      transaction.commit();
                  } 
          catch (HibernateException e) {
                      e.printStackTrace();
                      transaction.rollback();
                  }
              }
              
              
              @Test
              
          public void select(){
                  Session session
          =HibernateSessionFactory.getSession();
                  User user
          =(User) session.get(User.class1);
                  System.out.println(user.getName());
                  Set
          <Role> roles=user.getRoles();
                  
          for (Iterator<Role> iterator = roles.iterator(); iterator.hasNext();) {
                      Role role 
          = (Role) iterator.next();
                      System.out.println(role.getName());
                  }
              }
          posted on 2010-10-18 21:15 雪山飛鵠 閱讀(2135) 評(píng)論(1)  編輯  收藏 所屬分類: Hibernate

          Feedback

          # re: Hibernate多對(duì)多雙向關(guān)聯(lián)(Annotation配置) 2012-10-12 11:56 小俊
          挺!溫故知新  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 商南县| 岳普湖县| 横山县| 砀山县| 黔南| 闽侯县| 合阳县| 依安县| 涡阳县| 仙桃市| 陇西县| 大渡口区| 嵩明县| 旺苍县| 宁陕县| 陆河县| 浮梁县| 黔西| 富宁县| 光泽县| 怀来县| 贵州省| 淅川县| 台北县| 昭通市| 杭锦旗| 桑日县| 大洼县| 和静县| 公主岭市| 乃东县| 民和| 永丰县| 南川市| 精河县| 神木县| 平阳县| 西丰县| 五常市| 佳木斯市| 喀喇沁旗|