1.模型
一个用户拥有多个角色,一个角色拥有多个用户。
2.实体类(省略set,get方法)
3.数据模型
mysql> desc t_user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
mysql> desc t_role;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
4.映射文件
User.hbm.xml
一个用户拥有多个角色,一个角色拥有多个用户。
2.实体类(省略set,get方法)
public
class User {
private int id;
private String name;
private Set roles;
}
private int id;
private String name;
private Set roles;
}
public
class Role {
private int id;
private String name;
private Set users;
}
private int id;
private String name;
private Set users;
}
3.数据模型
mysql> desc t_user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
mysql> desc t_role;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
4.映射文件
User.hbm.xml
<
hibernate-mapping
>
< class name ="com.bjsxt.hibernate.User" table ="t_user" >
< id name ="id" >
< generator class ="native" />
</ id >
< property name ="name" />
< set name ="roles" table ="t_user_role" >
< key column ="userid" />
< many-to-many class ="com.bjsxt.hibernate.Role" column ="roleid" />
</ set >
</ class >
</ hibernate-mapping >
< class name ="com.bjsxt.hibernate.User" table ="t_user" >
< id name ="id" >
< generator class ="native" />
</ id >
< property name ="name" />
< set name ="roles" table ="t_user_role" >
< key column ="userid" />
< many-to-many class ="com.bjsxt.hibernate.Role" column ="roleid" />
</ set >
</ class >
</ hibernate-mapping >
Role.hbm.xml
<
hibernate-mapping
>
< class name ="com.bjsxt.hibernate.Role" table ="t_role" >
< id name ="id" >
< generator class ="native" />
</ id >
< property name ="name" />
< set name ="users" table ="t_user_role" >
< key column ="roleid" />
< many-to-many class ="com.bjsxt.hibernate.User" column ="userid" />
</ set >
</ class >
</ hibernate-mapping >
< class name ="com.bjsxt.hibernate.Role" table ="t_role" >
< id name ="id" >
< generator class ="native" />
</ id >
< property name ="name" />
< set name ="users" table ="t_user_role" >
< key column ="roleid" />
< many-to-many class ="com.bjsxt.hibernate.User" column ="userid" />
</ set >
</ class >
</ hibernate-mapping >
<key>中的column属性值必须等于单向关联中<many-to-many>标签指向的column的属性值
<many-to-many>中column属性值必须等于单向关联中<key>中column的属性值
5.测试
<many-to-many>中column属性值必须等于单向关联中<key>中column的属性值
5.测试
public
class ManyToManyTest
extends TestCase {
//存储
public void testSave(){
Session session = HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
User user1 = new User();
user1.setName( "yang9");
session.save(user1);
User user2 = new User();
user2.setName( "long1");
session.save(user2);
Set<User> users = new HashSet<User>();
users.add(user1);
users.add(user2);
Role role1 = new Role();
role1.setName( "凤山人在线");
role1.setUsers(users);
session.save(role1);
tx.commit();
}
//导入
public void testLoad(){
Session session =HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
Role role = (Role) session.load(Role. class, 1);
System.out.println(role.getName());
for(Iterator ite=role.getUsers().iterator();ite.hasNext();){
User user = (User) ite.next();
System.out.println(user.getName());
}
}
//存储
public void testSave(){
Session session = HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
User user1 = new User();
user1.setName( "yang9");
session.save(user1);
User user2 = new User();
user2.setName( "long1");
session.save(user2);
Set<User> users = new HashSet<User>();
users.add(user1);
users.add(user2);
Role role1 = new Role();
role1.setName( "凤山人在线");
role1.setUsers(users);
session.save(role1);
tx.commit();
}
//导入
public void testLoad(){
Session session =HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
Role role = (Role) session.load(Role. class, 1);
System.out.println(role.getName());
for(Iterator ite=role.getUsers().iterator();ite.hasNext();){
User user = (User) ite.next();
System.out.println(user.getName());
}
}
本文转自 yzzh9 51CTO博客,原文链接:http://blog.51cto.com/java999/119434,如需转载请自行联系原作者