我刚开始休眠,我有一个SQL查询,它可以完美地运行
SELECT count(*) as posti_disponibili from occupazione t inner join
(select id_posto_park, max(date_time) as MaxDate from occupazione
group by id_posto_park) tm on t.id_posto_park = tm.id_posto_park and
t.date_time = tm.Maxdate and t.isOccupied = 0
它给了我最后所有isOccupand=0 的项目
我把它移植到Hibernate中,我试着使用
result = ( (Integer) session.createSQLQuery(query).iterate().next() ).intValue()
返回post_disonibili,但我得到了这个异常
java.lang.UnsupportedOperationException: SQL queries do not currently support iteration
我该如何解决这个问题?我找不到等效的HQL查询
感谢
我建议您使用查询#uniqueResult()
这将给你一个结果。
select count(*) .....
将始终返回一个结果。
Hibernate支持类似滚动的迭代器:
String sqlQuery = "select a, b, c from someTable";
ScrollableResults scroll = getSession().createSQLQuery(sqlQuery).scroll(ScrollMode.FORWARD_ONLY);
while (scroll.next()) {
Object[] row = scroll.get();
//process row columns
}
scroll.close();