付子健 2009-03-20 17:31
浏览 173
已采纳

Hibernate 调用存储过程(多表连接查询的存储过程)list结果始终为1

我写的一个Hibernate调用存储过程的代码。

[code="java"]

public List getTotalRoomsAndAvailRoomsByApartmentID(final String apartmentid) {
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(final Session session) throws HibernateException, SQLException {
SQLQuery query = (SQLQuery) session.createSQLQuery("{call GetTotalAvailByApartId(?)}")
log.info("公寓id:" + apartmentid);
query.addScalar("total", Hibernate.INTEGER);
query.addScalar("avail", Hibernate.INTEGER);
log.info("List的大小是:" + query.list().size());

            for (int i = 0; i < query.list().size(); i++) {
                Object[] o = (Object[]) query.list().get(i);
                int avail = (Integer) o[0];
                // int avail = (Integer) o[1];
                System.out.println("tatal:\t" + avail + " , avail:\t");
            }
            return query.list();

        }
    });
    return null;
}

[/code]

实际的存储过程是:
BEGIN
select count(student.studentid) as total, (select sum(dormitory.dormitoryroomtype) from dormitory where dormitory.apartmentid=ApartId)-count(student.studentid) as avail from studentbedlink join student on student.studentid=studentbedlink.studentid join dormitorybed on dormitorybed.dormitorybedid=studentbedlink.dormitorybedid join dormitory on dormitory.dormitoryid=dormitorybed.dormitoryid where dormitory.apartmentid=ApartId;
END
当我输入apartID =1 时会返回列表:
total avail
1123 14
这种格式。

但是程序返回的结果List大小始终为1,
下面的循环打印也只能给出total的结果为:1123。 avail的值打印不出来。请问应该怎么写。
因为我的存储过程涉及三个POJO:Apartment, Dormitory,Student。
是否需要.addEntity(Student.class)?
还有.如果我把三个pojo都addEntity了。会提示我找不到apartmentid,studentid。
还是对于addscalar()不是特别明白。
知道的麻烦回复下。谢谢!

  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2009-03-21 13:39
    关注

    你怎么不用个局部变量保存query.list(),每次都去查啊?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口