本帖最后由 greenpearl 于 2012-11-06 11:22:31 编辑

解决方案 »

  1.   

    Map session = ActionContext.getContext().getSession();
      

  2.   

    /**当你需要使用的Session 方法没有在HibernateTemplate 中提供时,可以通过下面提供的基于回调的方案来实现,
     * 程序开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来访问数据库,
     * 解决了Spring封装Hibernate后灵活不足的缺陷, 通常,程序中采用实现HibernateCallback的匿名内部类来获取HibernateCallback的实例,
     * 方法doInHibernate就是Spring执行的持久化操作,封装了对异常的处理和对事务的一些处理,这里比find()方法更方便设置每页显示的数量
     * **/
      

  3.   

    http://blog.csdn.net/zmhinzaghi/article/details/7091629
      

  4.   

    我是想获得hibernate中的session,而不是页面的。
      

  5.   

    sessionFactory.getCurrentSession();
    你别告诉我你连sessionFactory都不知道
      

  6.   

    想看看你的dao层怎么写的?如果你继承了HibernateDaoSupport,父类是有提供方法获取session的,如果没有,就是楼上的方法,原理都是一样的,从sessionFactory中去获取。
      

  7.   

    sessionFactory.getCurrentSession()如果楼主的代码觉得麻烦,那说明你的spring,hibernate结合的不好.配置文件,没有把spring很好的配置进去;或者没有把sessionFactory注入进需要的地方
      

  8.   

    简单查询
    getHibernateTemplate().find(hql);
    就可以了...callback是用来分页的
      

  9.   

    public List findBySQL(final String sql,final Object[] values) {

    return super.getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    SQLQuery query=session.createSQLQuery(sql);
    if(values!=null&&values.length>0)
    {
    for(int i=0;i<values.length;i++)
    {
    query.setParameter(i, values[i]);
    }
    }
    return query.list();
    }});
    }
      

  10.   

    public void setHibernateTemplate(SessionFactory sessionFactory) {
    this.hibernateTemplate = new HibernateTemplate(sessionFactory);
    }
    public List<Master> getAllMaster(){
    String hql = "from Master";
    List<Master> list = this.hibernateTemplate.find(hql);
    return list;
    }
      

  11.   

    hibernateTemplate不是提供的有获得hibernateDao的方法吗,然后再一层一层的找get/get,具体忘了,你看一下apI文档
      

  12.   

    hibernate session 的工厂类 调用
      

  13.   

    楼主用的是3.5以下的版本可以通过hibernateDao方法一层一层调用,如果是3.5版本以上的话只能调用工厂方法!
      

  14.   

    你的DAO类继承HibernateSupport类,然后再application.xml里面配置sessionFactory,将sessionFactory注入到DAO类中(继承了HibernateSupport类,HibernateSupport类有sessionFactory变量),然后再DAO中就可以用this.getHibernateTemple()获得session
    public class UserDAOImpl extends HibernateDaoSupport implements UserDAO { public void saveUser(User user) {
    this.getHibernateTemplate().save(user);
    } public void removeUser(User user) {
    this.getHibernateTemplate().delete(user); } public User findUserById(Integer id) {
    User user = (User)this.getHibernateTemplate().get(User.class,id);
    return user;
    }

    @SuppressWarnings("unchecked")
    public List<User> findAllUsers() {
    String hql = "from User user order by user.id desc" ;
    return (List<User>)this.getHibernateTemplate().find(hql);
    } public void updateUser(User user) {
    this.getHibernateTemplate().update(user); }}
      

  15.   

    可以用SessionFactory.getCurrentSession()获取当前Session,如果是Hibernate4的话,因为去除了HIbernateTemplate这个东西,就可以这样获取当前的Session.