看看api啊
15. HQL: Hibernate查询语言
15.1. 大小写敏感性问题
15.2. from子句
15.3. 关联(Association)与连接(Join)
15.4. select子句
15.5. 聚集函数
15.6. 多态查询

解决方案 »

  1.   

    我想sole_lodestar() 误解我的意思了,Hibernate的这些操作不是问题,是在Spring中如何操作执行聚合查询,还是Spring根本就不提供这样的封装,只能直接调用Hibernate的方法。
      

  2.   

    在Spring的ApplicationContext中配一个JdbcTemplate,再把数据源传入。<bean id="JdbcTemplate" class="dbcommon.JDBCTemplate">
      <property name="datasource"><ref local="MySQL5"/></property>
    </bean>-----------------------------------------------package dbcommon;import java.util.List;import interfaces.IDao;
    import javax.sql.DataSource;
    import org.springframework.jdbc.core.JdbcTemplate;public class JDBCTemplate implements IDao
    {  
        DataSource datasource;

    public void JDBCTemplate(DataSource datasource)
       { 
     this.datasource=datasource;
     
       }
    public DataSource getDatasource()
    {
    return datasource;
    }
    public void setDatasource(DataSource datasource)
    {
    this.datasource = datasource;
    }

    public void insert(Object u)
    {
    // TODO Auto-generated method stub

    }
    public void update(Object u)
    {
    // TODO Auto-generated method stub

    }
    public void delete(Object u)
    {
    // TODO Auto-generated method stub

    }
    public void update(String sql)
    {
    // TODO Auto-generated method stub

    }
    public void delete(String sql)
    {
    // TODO Auto-generated method stub

    }
    public void execute(String sql)
    {  
    JdbcTemplate template=new JdbcTemplate(this.datasource);
    template.execute(sql);

    }
    public List query(String sql) 
    {
    // TODO Auto-generated method stub
    return null;
    }

    然后就可以执行任何正规的SQL语句了,HQL不够灵活的。
      

  3.   

    我可不可以用HibernateDAOSupport类的getSession()方法来获得一个Session,如果我已经获得了一个Session,我需不需要在方法中调用session.close()方法来关闭该Session?
      

  4.   

    采用spring的回调方式
    public Integer getCount(){
       HibernateTemplate hibernateTemplate() = new HibernateTemplate(this.sessionFactory)
       return (Integer) hibernateTemplate().execute(new HibernateCallback(){
             public Object doInHibernate(Session session) {
              ...这里作你的查询
             }
       });
    }
      

  5.   

    spring的回调方式是可以取得session,作用就是作不同o/r所具有的一些特殊操作,而模板就是作通用的操作
      

  6.   

    我的Session已经得到了,原因是我的实现类没有注入,但是,当我进行求和查询时,如:Select sum(c.logintimes) from loginstat c 语句,Spring提示:not mapped.[Select sum(c.logintimes) from loginstat c]。难道Spring中无法进行如:sum、count、averg、max、min等聚合函数的操作吗?非得用JdbcTemplate或者回调函数?
      

  7.   

    不是spring无法进行聚合函数操作,是因为那是HQL语句,HQL语句虽然没标准SQL那么强大,但应该也能进行sum,aveg等操作的,可能你有的地方搞错了。