hql使用子查询

一 简介
可以在sql中,我们经常使用子查询处理复杂的查询要求,在hql中,我们一样可以使用子查询来完成复杂查询要求:

二 实例
package com.cakin.view;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import com.cakin.util.*;
import com.sina.domain.Course;
import com.sina.domain.Studcourse;
import com.sina.domain.Student;
public class TestMain2 {
        //请显示所有选择了21号课程的学生信息
        String hql="select student.sname,student.sdept from Studcourse where course.cid=?";
        String parameters[]={"21"};
        List<Object[]> list=HibernateUtil.executeQuery(hql, parameters);
        for(Object[] s:list){
            System.out.println(s[0].toString()+" "+s[1].toString());
        }
        System.out.println("******************");
        String hql1="from Studcourse where course.cid=21";
        List<Studcourse> list1=HibernateUtil.executeQuery(hql1, null);
        //需要配置懒加载,下面语句才能成功
        // <class name="com.sina.domain.Student" table="student"  catalog="selectcourse" lazy="false">
        for(Studcourse sc:list1){
            System.out.println(sc.getGrade()+sc.getStudent().getSname());
        }
    }
}



三 测试结果
林青霞 计算机系
成龙 化学系
******************
19林青霞
45成龙

四 Hibernate对象的三种关系
one–to–one:身份证<--->人
one–to–many:部门 <---> 员工
many-to-one:员工<--->部门
many-to-many:学生<--->课程
我们的Student【学生表】和 Course【课程表】就是多对多,多对多一般都会通过一个中间表转成one-to-many和 many-to-one
我们这里用了一个中间表StudCourse【学生-课程表】把关系简化成one-to-many和many-to-one。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值