hibernate关联表查询
在实体类添加完后,在类的映射文件中同样添加。 在这里,添加多对一关系,配置文件所在类为“多”,即学生表;实训班级表为“一”。这里注意,many-to-one中,name对应实训学生表中的属性,即班级对象。column对应实训学生表的列名。class对应“一”所在类的路径名。 这样,关联关系就配好了,下面就是在页面中获得属性值。 列表页面中,${item.traClass.className }。即可显示出两表的数据。 其次,考虑到多表查询,使用拼装hql语句分页,并返回list。 public String list() { // 从请求参数中获取pageNumber String[] str = ActionContextUtils.getParameters(Globals.PAGE_NUMBER); int pageNo = NumberUtils.toInt(str[0], 1); StringBuffer hql = new StringBuffer(); hql.append(" from TrainStudent t where 1=1 "); List params = new ArrayList(0); if (!StringUtils.isEmpty(this.grade)) { hql.append(" and t.traClass.grade like ?"); params.add("%" + this.grade + "%"); } if (!StringUtils.isEmpty(this.className1)) { hql.append(" and t.traClass.className like ?"); params.add("%" + this.className1 + "%"); } if (!StringUtils.isEmpty(this.studentName)) { hql.append(" and t.studentName like ?"); params.add("%" + this.studentName + "%"); } if (!StringUtils.isEmpty(this.studentNo)) { hql.append(" and t.studentNo like ?"); params.add("%" + this.studentNo + "%"); } Pagination pagination = this.trainStuService.findByPage( pageNo, this.getPageSize(), hql.toString(), params.toArray()); // 把pagination对象保存到request范围中 ActionContextUtils.setAtrributeToRequest("pagination", pagination); return "list"; } 这样,就可以实现多表显示及查询了。
你好! 根据你所说的你可以这样做: List list=dao.all("from Student");//查询数据库 for(int i=0;i 可以使用HQL中的连接查询,内连接的方法,很容易就实现了