hibernate学习7之many-to-many双向关联
来源:互联网 发布:淘宝信用支付是什么 编辑:程序博客网 时间:2024/05/21 10:39
Hibernate.cfg.xml配置同前一节。
User.hbm.xml中这样配置:
Role.hbm.xml中这样配置:
比较上面2个配置,其实userid和roleid互换位置而已;
这里order-by="userid"是查出来的数据根据userid排序,去掉也没关系。
测试一下:
import java.util.Set;public class User {private int id;private String name;private Set roles; //setter,getter}
import java.util.Set;public class Role {private int id;private String name;private Set users;//setter,getter}
User.hbm.xml中这样配置:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><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中这样配置:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><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" order-by="userid"><key column="roleid"/><many-to-many class="com.bjsxt.hibernate.User" column="userid"/></set></class></hibernate-mapping>
比较上面2个配置,其实userid和roleid互换位置而已;
这里order-by="userid"是查出来的数据根据userid排序,去掉也没关系。
测试一下:
import java.util.HashSet;import java.util.Iterator;import java.util.Set;import org.hibernate.Session;import junit.framework.TestCase;public class Many2Many extends TestCase {public void testSave2() {Session session = null;try {session = HibernateUtils.getSession();session.beginTransaction();Role r1 = new Role();r1.setName("数据录入人员");session.save(r1);Role r2 = new Role();r2.setName("商务主管");session.save(r2);Role r3 = new Role();r3.setName("大区经理");session.save(r3);User u1 = new User();u1.setName("10");Set u1Roles = new HashSet();u1Roles.add(r1);u1Roles.add(r2);u1.setRoles(u1Roles);User u2 = new User();u2.setName("祖儿");Set u2Roles = new HashSet();u2Roles.add(r2);u2Roles.add(r3);u2.setRoles(u2Roles);User u3 = new User();u3.setName("杰伦");Set u3Roles = new HashSet();u3Roles.add(r1);u3Roles.add(r2);u3Roles.add(r3);u3.setRoles(u3Roles);session.save(u1);session.save(u2);session.save(u3);session.getTransaction().commit();}catch(Exception e) {e.printStackTrace();session.getTransaction().rollback();}finally {HibernateUtils.closeSession(session);}}public void testLoad1() {Session session = null;try {session = HibernateUtils.getSession();session.beginTransaction();User user = (User)session.load(User.class, 1);System.out.println(user.getName());for (Iterator iter=user.getRoles().iterator(); iter.hasNext();) {Role role = (Role)iter.next();System.out.println(role.getName());}session.getTransaction().commit();}catch(Exception e) {e.printStackTrace();session.getTransaction().rollback();}finally {HibernateUtils.closeSession(session);}}public void testLoad2() {Session session = null;try {session = HibernateUtils.getSession();session.beginTransaction();Role role = (Role)session.load(Role.class, 1);System.out.println(role.getName());for (Iterator iter=role.getUsers().iterator(); iter.hasNext();) {User user = (User)iter.next();System.out.println(user.getName());}session.getTransaction().commit();}catch(Exception e) {e.printStackTrace();session.getTransaction().rollback();}finally {HibernateUtils.closeSession(session);}}}
0 0
- hibernate学习7之many-to-many双向关联
- hibernate学习5之one-to-many双向关联
- hibernate学习5之one-to-many双向关联
- hibernate学习6之many-to-many单向关联
- Hibernate one-to-many many-to-one 双向关联
- Hibernate的many-to-many双向关联的配置办法
- [Hibernate]基于xml和annotation的many-to-many双向关联【学习笔记】
- many-to-many双向关联映射
- Hibernate学习笔记(4)Hibernate映射文件之many-to-many(多对多关联)
- hibernate学习之——many-to-many(双向多对多关系)
- Hibernate学习笔记:一对多的关联关系(one-to-many) 双向关联
- Hibernate学习笔记:一对多的关联关系(one-to-many) 双向关联
- 码农小汪-Hibernate学习4-关联关系映射many-to-one,many-to-one,one-to-many
- hibernate 一对多(one-to-many)双向关联
- Hibernate的many-to-many双向关联需要注意的要求及简单示例
- hibernate学习2之many-to-one
- one-to-many双向关联映射
- hibernate-----many-to-many
- train data 和 model bias 对 Mutilayer Perceptrons 的影响
- hibernate学习5之one-to-many双向关联
- 344. Reverse String
- hibernate学习6之many-to-many单向关联
- shell echo命令
- hibernate学习7之many-to-many双向关联
- Power URAL
- apache php部署常见问题
- hibernate学习8之lazy策略
- 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- hibernate学习9之extends(继承)映射
- hibernate学习10之component(组件)映射
- hibernate学习11之composite(复合)主键映射
- hibernate学习12之Collection(集合)映射