多表关联(二)-hql语句查询


String hql="select new com.sinosoft.education.prototype.TeacherInfoBean(" +
"ti.teacherId," +
"ti.teacherName," +
"(select min(pt.teacSchoolStartTime) from ti.sysEduProjectTeachers pt where pt.teacSchoolEndTime >:endtime and pt.teacSchoolStartTime <=:endtime)," +
"(select min(pt.teacSchoolEndTime) from ti.sysEduProjectTeachers pt where pt.teacSchoolEndTime >:endtime and pt.teacSchoolStartTime <=:endtime)," +
"isnull((select avg(pl.lessonTeacherPoint) from ti.sysEduProjectLessons pl ),0.0)" +
") " +
"from SysTeaTeactherInfo ti left join ti.sysTeaProfFields pf " +
"where concat(',',trim(str(pf.fieldId)),',',pf.fieldFatherStr) like "+"'%,"+fieldId.toString()+",%'" ;
List<TeacherInfoBean> teacherIds=this.findByNamedParam(hql,new String[]{"endtime"},new Object[]{DateUtil.parse("2013-11-29")});
for(TeacherInfoBean id:teacherIds)
{
System.out.println(id.getTeacherName());
System.out.println(id.getTeacherId());
System.out.println(id.getAvg());
System.out.println(DateUtil.toString(id.getComeTime()));
System.out.println(DateUtil.toString(id.getEndTime()));
}
String countHql="select count(*)"+
"from SysTeaTeactherInfo ti " +
"left join ti.sysTeaProfFields pf " +
"left join ti.sysEduProjectTeachers pt " +
"where concat(',',trim(str(pf.fieldId)),',',pf.fieldFatherStr) like "+"'%,"+fieldId.toString()+",%' " +
"and (pt.teacSchoolEndTime >=:endtime)or(pt.teacSchoolEndTime <= :endtime)" ;
System.out.println("=======================================");
return this.findByHqlOnPage(hql, page, countPerPage, new String[]{"endtime"},new Object[]{DateUtil.parse("2013-11-29")},countHql);



同时需要自定义teacherbean 且bean中的属性必须和hql语句中的元素顺序相同,否则可能会出现传值错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值