1,如果你的數據庫中 学号和学期 是唯一的話。
 可以在BO層的類中 先new 一個新對象, 然后把学号和学期設置到對象里 然后調用Dao里的remove×××方法
 exam:  Student stu = new Student();
        stu.setStuId('012');  //此值設置為你得到的值
        stu.setTerm('1');  //此值設置為你得到的值
         studentDao.removeStudent(stu);2,如果不能組成唯一的話,就是說數據庫中會存在学号和学期相同的兩條記錄,你可以在Dao類里自己寫個方法。
public void removeElbook421ab(String caseid,String custid) {
     /*Elbook421ab elbook421ab = new Elbook421ab();
     elbook421ab.setCaseid(caseid);
     elbook421ab.setCustId(custid);
     List list = this.getElbook421abs(elbook421ab); //先根據2個ID查出對象
    
     if(list == null || list.size()<=0) return;
     for(int i=0;i<list.size();i++) {
     getHibernateTemplate().delete(list.get(i)); //再刪除此對象
     }*/
/////////////////////自己寫SQL語句刪    
     String sql1 = "delete from Elbook42_1ab where caseid='"+caseid+"' and cust_id='"+custid+"';";
     String sql2 = "delete from Elbook42_1aba where caseid='"+caseid+"' and cust_id='"+custid+"';";
     Session session = this.getSession();
     Query query = session.createSQLQuery(sql1);
     try{
     query.executeUpdate();
     query = session.createSQLQuery(sql2);
     query.executeUpdate();
     }catch(Exception ex){
     log.error("刪除數據出錯!"+ex);
     }finally{
     this.releaseSession(session);
     }你參照下吧。   問題解決勒記得結貼散粉噢!
祝你成功。

解决方案 »

  1.   

    一般的做法都是在界面上有个list  你点击其中一条来删除或者选择多条删除,你的主键最好是自动生成的然后在list的时候作为隐藏域,当你点击删除的时候 就把这个id传到dao里面,然后在dao里可以写这样一个函数public void delete(Integer id) {
    Student p = (Student)getHibernateTemplate().get(Student.class,id);
    getHibernateTemplate().delete(p);
    }如果根据你所说的进行删除的话,可以这样:public int delete(Integer id,String term) {
    Session session = SessionFactoryUtils.getSession(getSessionFactory(), false);
           try {
            
             Query q = session.createQuery("delete Student p where p.id = :id and term=:term);
             q.setInteger("id", id);
             q.setString("term",term);
             q.executeUpdate();
           }
           catch (HibernateException ex) {
                throw convertHibernateAccessException(ex);
           }
    }
      

  2.   

    我用楼上的楼上的方法怎么报异常了,说not suppert,修改后使用以下方法得以成功实现deleteString sqlQuery = "from Student stu where stu.id="+id+" and stu.term='"+term+"'":
    Query query = session.createQuery(sqlQuery);
    //得到要删除的学生成绩信息
    List list = query.list();
    for(int i=0;i<list.size();i++){
       Student stu = (Student)list.get(i);
       session.delete(stu);
       session.fuesh();
    }
    //在加上session.beginTransaction,和try/catch块就没问题了