我用SQLQery执行了一个HQL语句 
select {p.*},{bj.*}
from t_shouli as p  left outer join t_banjie as bj on p.ywlsh = bj.ywlsh  
where   p.sjbbh=(select  max(th.sjbbh) from  t_shouli as th where p.ywlsh = th.ywlsh group by th.ywlsh  and (bj.sjbbh = (select  max(th.sjbbh) from  t_banjie as th  where p.ywlsh = th.ywlsh   group by th.ywlsh  or bj.sjbbh is null) and p.yxtywlsh like '%%' and p.xmmc like '%%' and  ( p.byzdb>=1 and p.byzdb<=5 ) and p.SGFS=1 
现在问题是怎么样求共有几条的记录呢? 用count(*) 怎么写呢? 

解决方案 »

  1.   

    select count(p.主键)......
    以下同原来的语句
      

  2.   

    你这不是返回的List的么,有size(),如果不是的话,就应该写下面的
    select count as total from t1,t2 where 条件
      

  3.   

    select count(*) from table1 as a where 条件=?
      

  4.   

    几位老大  你们的回答也太令我失望了  五楼的我也知道返回的List,有size()方法 但是这样做 数据一多效率非常慢 
    所以不要查所有的数据记录 
    六楼的 我也知道“select count(*) from table1 as a where 条件=?” 这么写 但是请你看看我的HQL语句好吗 
      

  5.   

    楼主hql语句应该换种方式写吧.
    你的p和bj表对应的bean中应该有各自的表对象吧,
    根据hibernate 级联关系只用得到一个表的对象就能级联出和它关联的表对象呀..
      

  6.   

    在hibernate中:
    Query query = getSession().createSQLQuery(sql); //此种查询方式只支持sql,不支持hql
    Query query = getSession().createQuery(sql); //此种查询方式支持hql。o(∩_∩)o...
      

  7.   

    9 楼  我这写的是 SQLQuery 啊  
    10楼  我哭笑不得 我现在是求我上面的SQLQuery 语句 返回多少条记录? 怎么用count()函数写!
      

  8.   

    其实真的很简单啊,我是用createQuery写的。
    createSQLQuery也一定能实现,但是写hibernate demo太麻烦了,不给你写了楼主,下面的代码是从我项目里面摘的。
    List list = getHibernateTemplate().executeFind(new HibernateCallback() {
    public Object doInHibernate(Session session)
    throws HibernateException {
    String queryString = "select client.id as cltId , client.name as cltName,"
    + "(select count(document.id) from CtiDocument document where "
    + " document.applyClient.treeNo like client.treeNo+'%') as docStat"
    + " from CtiClient client ";
    Query query = session.createQuery(queryString);
    query.setResultTransformer(Transformers
    .aliasToBean(DocStatistic.class));
    return query.list();
    }
    });