你没说清楚是什么异常,我猜想很可能是session被意外关闭的异常吧?提两点意见:
1、别在getList()中去getSession()及closeSession(),你可以把session作为getList()的一个参数。这样,只需要在 getCategoryList() 中获取/关闭会话一次。
2、既然是查询,那些事务代码是多余的,全部去掉吧。按上边两点来做,一则精简了代码,二则可能消除了你之前的异常。如果精简代码之后还出异常,请把异常信息贴出来。

解决方案 »

  1.   

    一般做查询的时候就不要用事务,
    public  void getList(List <CategoryForm> list,CategoryForm cf){
    Session session = null;
    List <CategoryForm> listtemp=new ArrayList();
    int index=list.indexOf(cf);
    try{
    session = HibernateUtils.getSession(); 
    listtemp = session.createQuery("from CategoryForm c where c.pid=?")
      .setParameter(0, cf.getId())
      .list(); 
    session.close();
    return list;
    就好了