Hibernate学习43 -- 抓取策略3 -- 子查询抓取
2009-12-10 12:24
423 查看
fetch="subselect",另外发送一条select语句抓取在前面查询到的所有实体对象的关联集合。例如:<set name="students" inverse="true" cascade="all" fetch="subselect">
例子代码如下:
例子代码如下:
Classes.hbm.xml <hibernate-mapping package="hibernate"> <class name="Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="students" inverse="true" cascade="all" fetch="subselect"> <key column="classesid"/> <one-to-many class="Student"/> </set> </class> </hibernate-mapping> 测试代码: public class FechTest extends TestCase { public void testFetch1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); Classes classes = (Classes)session.load(Classes.class, 1); //发出一条sql查询班级 System.out.println("classes.name=" + classes.getName()); //发出一条sql查询这个班级下学生 for (Iterator iter=classes.getStudents().iterator(); iter.hasNext();) { Student student = (Student)iter.next(); System.out.println("student.name=" + student.getName()); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } public void testFetch2() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); //发出一条查询这三个班级的sql List classesList = session.createQuery ("select c from Classes c where c.id in(1, 2, 3)").list(); for (Iterator iter=classesList.iterator(); iter.hasNext();) { Classes classes = (Classes)iter.next(); System.out.println("classes.name=" + classes.getName()); //发出一条查询这三个班级下的所有学生sql for (Iterator iter1=classes.getStudents().iterator(); iter1.hasNext();) { Student student = (Student)iter1.next(); System.out.println("student.name=" + student.getName()); } } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } } |
相关文章推荐
- Hibernate学习42 -- 抓取策略2 -- 查询抓取
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合--实例)
- [原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存
- Hibernate学习41 -- 抓取策略1 -- 连接抓取
- hibernate04 懒加载、抓取策略、二者结合、session详解、一级缓存、二级缓存、查询缓存
- Hibernate学习---第十二节:Hibernate之数据抓取策略&批量抓取
- Hibernate检索策略学习之--预先抓取
- Hibernate学习手记(8) - 抓取策略
- 【Java EE 学习 48】【Hibernate学习第五天】【抓取策略】【二级缓存】【HQL】
- Hibernate学习44 -- 抓取策略4 -- 批量抓取(Batch fetching)
- 【Hibernate学习】 —— 抓取策略(注解方式)
- Hibernate视频学习笔记(14)抓取策略
- Hibernate中的多表查询及抓取策略
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)
- hibernate抓取策略学习
- Hibernate学习---第十一节:Hibernate之数据抓取策略&批量抓取
- Hibernate学习之抓取策略与懒(延迟)加载
- Hibernate中的多表查询及抓取策略
- Hibernate-4.抓取策略(查询)
- 18.01.06,web学习第三十八天,还有一年,努力吧青年 hibernate第四天 HQL,Criteria,离线对象,查询策略