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 閱讀(534) 評論(0)  編輯  收藏 所屬分類: Frame

          導航

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案(17)

          文章分類(86)

          收藏夾(3)

          flex blog

          good site

          java blog

          my friend

          tools

          抓蝦

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 社旗县| 科尔| 松阳县| 岚皋县| 武邑县| 江达县| 白玉县| 甘肃省| 奇台县| 岑巩县| 扶绥县| 紫金县| 龙海市| 淅川县| 贡山| 大渡口区| 金昌市| 安乡县| 报价| 个旧市| 无锡市| 宁夏| 东至县| 女性| 获嘉县| 贡觉县| 徐水县| 桂东县| 错那县| 兴海县| 交口县| 大连市| 胶南市| 新泰市| 广南县| 昆明市| 洛阳市| 文成县| 葫芦岛市| 宝山区| 杭锦旗|