我想计算使用条件api构造的查询返回的结果。 我不想重写任何这些查询。我试过了
(Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();
可能有效,但取决于连接和限制Hibernate 3.2.4将生成
无效的sql(DB2:com.ibm.db2.jcc.b.co:DB2 SQL错误:SQLCODE = -119, SQLSTATE = 42803,表示“具有条款的列或表达式” 无效“)。以下示例......
如果原始sql是
select * from ... where ... order by ...
然后计数投影基本上只用count(*)
取代*,这就像
select count(*) as y0_ from ... where ... order by ...
可能会引发错误。通过包装原始SQL并预先select count(*)
:
select count(*) from (select * from ... where ... order by ...);
如何实现这一目标或者你还能提出什么建议呢?
这里是一个无效的sql示例:
select count(*) as y0_
from UZI.Ereignis this_
left outer join UZI.Zaehlerzustand zaehlerzus1_ on this_.zustandHz_id=zaehlerzus1_.id
left outer join UZI.Mandant mandantali3_ on zaehlerzus1_.mandant_id=mandantali3_.id
left outer join UZI.Zaehlerzustand zaehlerzus2_ on this_.zustandNz_id=zaehlerzus2_.id
left outer join UZI.Mandant mandantali4_ on zaehlerzus2_.mandant_id=mandantali4_.id
where (zaehlerzus1_.zaehlernummer like ? or zaehlerzus2_.zaehlernummer like ?)
and (mandantali3_.id=? or mandantali4_.id=?)
order by this_.id desc