1.模型
一個使用者擁有多個角色,一個角色擁有多個使用者。
2.實體類(省略set,get方法)
public class User {
private int id;
private String name;
private Set roles;
}
public class Role {
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;
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>
Role.hbm.xml
<class name="com.bjsxt.hibernate.Role" table="t_role">
<set name="users" table="t_user_role">
<key column="roleid"/>
<many-to-many class="com.bjsxt.hibernate.User" column="userid"/>
<key>中的column屬性值必須等于單向關聯中<many-to-many>标簽指向的column的屬性值
<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();
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());
<a href="http://down.51cto.com/data/2351413" target="_blank">附件:http://down.51cto.com/data/2351413</a>
本文轉自 yzzh9 51CTO部落格,原文連結:http://blog.51cto.com/java999/119434,如需轉載請自行聯系原作者