付子健 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 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛