天天看點

多對多關聯映射(雙向關聯)見項目:me_many_to_many

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,如需轉載請自行聯系原作者