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();
}
}
分享到:
相关推荐
NULL 博文链接:https://lzg3267373.iteye.com/blog/355721
Hibernate的多对一和一对多操作实例
Hibernate级联操作一对多demo Hibernate级联操作一对多demo Hibernate级联操作一对多demo
Hibernate(多对多表操作)
Hibernate(一对多表操作)
hibernate基于 一对多、多对一映射写的一个增加,查询,删除,修改的demo,内附数据库脚本
hibernate多对多映射关系,操作实体类,第三篇,使用于新手
Hibernate对BLOB CLOB操作,详细的操作说明
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
Hibernate操作持久化对象Hibernate操作持久化对象Hibernate操作持久化对象Hibernate操作持久化对象Hibernate操作持久化对象
hibernate操作全面配置讲解 让你知道如何使用myeclipse来配置一个hibernate的项目。
使用Hibernate映射Blob,Clob字段,并对这些字段完成存,取功能
Hibernate操作数据库的方法.doc
Hibernate基本数据操作方法 java struts hibernate
详细讲解了hibernate 的多对一xml配置以及curd操作,讲解了级联操作,适合初学者学习
基于HIBERNATE 操作表的关系练习例子
hibernate 操作数据库的详细图解。
详细介绍Hibernate操作数据库的步骤,附例图
hibernate更新操作 hibernate更新操作