代码如下:
/**
 * 删除学生
 * @param id
 */
public void delete(int id){
Student stu = (Student)this.hibernateTemplate.load(new Student().getClass(), id);
this.hibernateTemplate.delete(stu);
}
在配置文件中配置显示sql ,尽然只有第一句话发送sql,并执行了的,delete那一句竟然没得任何动静。不知道是哪里出了问题 ,希望大家帮帮忙。
显示的输出id 也是能够得到值的,在控制台,自己执行这一句也是可以的,但是放到tomcat下面,从前台页面传值下来,这个delete就不执行了,郁闷·······

解决方案 »

  1.   

    有报错?
    控制台有sql? sql贴出来。
    Student stu = (Student)this.hibernateTemplate.load(new Student().getClass(), id);这里没必要实例化一个Student 然后得到class 直接用Student.class 就行了。Student stu = (Student)(this.hibernateTemplate.load(Student.class , id));
      

  2.   

    没有报错,控制台可以打印传过来的ID。
    Hibernate: 
        select
            student0_.id as id3_2_,
            student0_.age as age3_2_,
            student0_.cla_id as cla7_3_2_,
            student0_.hobbys as hobbys3_2_,
            student0_.name as name3_2_,
            student0_.ps as ps3_2_,
            student0_.sex as sex3_2_,
            sclass1_.id as id2_0_,
            sclass1_.major_id as major3_2_0_,
            sclass1_.name as name2_0_,
            major2_.id as id1_1_,
            major2_.college_id as college3_1_1_,
            major2_.name as name1_1_ 
        from
            student student0_ 
        left outer join
            sclass sclass1_ 
                on student0_.cla_id=sclass1_.id 
        left outer join
            major major2_ 
                on sclass1_.major_id=major2_.id 
        where
            student0_.id=?
    Hibernate: 
        select
            college0_.id as id0_0_,
            college0_.name as name0_0_ 
        from
            college college0_ 
        where
            college0_.id=?
    这是发送的sql,按照代码逻辑,应该后面就是delete 的语句,可是没有发送任何语句
      

  3.   

    我debug了的,他确实进去执行this.hibernateTemplate.delete(stu);这段代码的,但是数据库里字段还是存在·······   这个是个什么bug?
      

  4.   

    Student stu = (Student)this.hibernateTemplate.load(new Student().getClass(), id);
    这句话执行之后  stu为null所以delete没有执行吧!
      

  5.   

      
    不是这个问题,是因为sprin 的事务必须开启,我之前没有开启事务,stu不是null 
    ths