String sql="select a.* 
from 
file_info_tab a,
(select t.soft_id,t.module_id,t.file_name,max(t.file_ver) as file_ver from file_info_tab t group by t.soft_id,t.module_id,t.file_name) b
where 
a.soft_id = b.soft_id and a.module_id = b.module_id and a.file_ver = b.file_ver";
////Hibernate 3.0
Query query=session.createQuery(sql);
//hibernate 2.0
Query query=session.find(sql);

解决方案 »

  1.   

    不对吧,好像hibernate的子查询,不能放到from里面吧,但放到where里是没问题的
      

  2.   

    我觉得的这个用hibernate的sql检索方式比较简单,它支持各个数据库自己的特性:
    String sql="select a.* 
    from 
    file_info_tab a,
    (select t.soft_id,t.module_id,t.file_name,max(t.file_ver) as file_ver from file_info_tab t group by t.soft_id,t.module_id,t.file_name) b
    where 
    a.soft_id = b.soft_id and a.module_id = b.module_id and a.file_ver = b.file_ver";Query query = session.createSQLQuery(sql);
      

  3.   

    我用了session.createQuery()执行SQL语句,但返回的List总是null,SQL是可以查出记录的,不知道为什么总返回null另外session中没有createSQLQuery(sql);方法呀,文教各位了,多谢了
      

  4.   

    1.session.createQuery()是执行HQL得,不是执行SQL
    2.session.createSQLQuery()才是执行SQL得
      

  5.   

    拜托给一个完整的createSQLQuery()的例子,比如,我要执行如下一个SQL:
    select a.* from file_info_tab a,(select t.soft_id,t.module_id,t.file_name,max(t.file_ver) as file_ver from file_info_tab t group by t.soft_id,t.module_id,t.file_name) b where a.soft_id = " + soft_id + " and a.soft_id = b.soft_id and a.module_id = b.module_id and a.file_ver = b.file_ver and a.file_name = b.file_name