hibernate many-to-many case

          SQL(MY SQL):
          create table tgroup (
          ? group_id int not null auto_increment,
          ? name varchar(16) not null default ′′,
          ? primary key? (group_id)
          ) type=innodb;

          create table trole (
          ? role_id int not null auto_increment,
          ? name varchar(16) not null default ′′,?
          ? primary key? (role_id)
          ) type=innodb;

          create table tgroup_role (
          ? group_id int not null,
          ? role_id int not null,
          ? primary key(group_id, role_id),
          ? index (group_id),
          ? foreign key (group_id) references tgroup(group_id),
          ? index (role_id),
          ? foreign key (role_id) references trole(role_id)
          ) type=innodb;

          Group 類:
          package ivan.hibernate.many2many;
          public class Group {
          ? ?private int id;
          ? ?private String name;
          ? ?private Set roles = new HashSet();
          ?? ...
          }

          Group.hbm.xml:
          <hibernate-mapping>
          ??? <class name="ivan.hibernate.many2many.Group" table="tgroup">
          ??????? <id name="id" column="group_id" unsaved-value="0">
          ??????????? <generator class="increment"/>
          ??????? </id>
          ??????? <property name="name" type="string"/>??????
          ??????? <set name="roles"
          ???????????? table="tgroup_role"
          ???????????? cascade="save-update">????????????
          ???????????? <key column="group_id"/>
          ???????????? <many-to-many class="ivan.hibernate.many2many.Role"
          ?????????????????????????? column="role_id"/>
          ?????? </set>
          ??? </class>
          </hibernate-mapping>

          Role 類:
          package ivan.hibernate.many2many;
          public class Role {
          ?? private int id;
          ? ?private String name;
          ? ?private Set groups = new HashSet();
          ?? ...
          }

          Role.hbm.xml:
          <hibernate-mapping>
          ??? <class name="ivan.hibernate.many2many.Role" table="trole">
          ??????? <id name="id" column="role_id" unsaved-value="0">
          ??????????? <generator class="increment"/>
          ??????? </id>
          ??????? <property name="name" type="string"/>??????
          ??????? <set name="groups"
          ???????????? table="tgroup_role"
          ????????????
          inverse="true"
          ???????????? cascade="save-update">????????????
          ???????????? <key column="role_id"/>
          ???????????? <many-to-many class="ivan.hibernate.many2many.Group"
          ?????????????????????????? column="group_id"/>
          ??</set>
          ??? </class>
          </hibernate-mapping>

          hibernate.cfg.xml 同前面的例子差不多。

          public class Test {
          ?
          ?public static void main(String[] args) throws HibernateException {
          ????
          ??Role role1 = new Role();?
          ??role1.setName("Role1");
          ??Role role2 = new Role();
          ??role2.setName("Role2");
          ??Role role3 = new Role();
          ??role3.setName("Role3");
          ??Group group1 = new Group();
          ??group1.setName("group1");
          ??Group group2 = new Group();
          ??group2.setName("group2");
          ??Group group3 = new Group();
          ??group3.setName("group3");
          ??group1.getRoles().add(role1);
          ??group1.getRoles().add(role2);
          ??group2.getRoles().add(role2);
          ??group2.getRoles().add(role3);
          ??group3.getRoles().add(role1);
          ??group3.getRoles().add(role3);
          ??role1.getGroups().add(group1);
          ??role1.getGroups().add(group3);
          ??role2.getGroups().add(group1);
          ??role2.getGroups().add(group2);
          ??role3.getGroups().add(group2);
          ??role3.getGroups().add(group3);
          ?
          ??SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
          ??Session session = sessionFactory.openSession();
          ??Transaction tx= session.beginTransaction();
          ??session.save(role1);
          ??session.save(role2);
          ??session.save(role3);
          ??session.save(group1);
          ??session.save(group2);
          ??session.save(group3);
          ??tx.commit();
          ??session.close();
          ??sessionFactory.close();
          ?}
          }

          posted on 2006-10-31 15:47 leoli 閱讀(537) 評論(0)  編輯  收藏 所屬分類: Frame

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案(17)

          文章分類(86)

          收藏夾(3)

          flex blog

          good site

          java blog

          my friend

          tools

          抓蝦

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 共和县| 达孜县| 西华县| 周至县| 百色市| 江阴市| 永胜县| 新乐市| 四子王旗| 和平县| 安西县| 邯郸县| 麻阳| 土默特左旗| 宜州市| 义马市| 新津县| 东平县| 天全县| 宜黄县| 任丘市| 财经| 彭阳县| 万盛区| 长泰县| 新巴尔虎左旗| 广宁县| 岢岚县| 江川县| 抚州市| 丘北县| 新绛县| 凯里市| 翁牛特旗| 天门市| 那曲县| 汉中市| 峨边| 肥乡县| 东丰县| 聊城市|