使用getHibernateTemplate().update(internApply)语句来更新数据库,更新操作不执行。但使用save却可以添加成功。具体情况如下:action代码:
public String execute() {
String stuName[] = sequence.replaceAll(" ", "").split(",");
for(int i=0;i<stuName.length;i++){
System.out.println("第"+i+"学生的姓名为:"+stuName[i]);
internApply = internApplyDao.findByName(stuName[i]).get(0);//获取对象
internApply.setOrder(i+1);//修改数据库中的字段
System.out.println("修改后的order为:"+internApply.getOrder());
internApplyDao.update(internApply);
}
return SUCCESS;
}以下为截取的部分后台输出:第1学生的姓名为:郭剑乔
16:28:20,475 DEBUG org.hibernate.SQL:111 - select internappl0_.Tn_ID as Tn1_22_, internappl0_.Tn_apply_time as Tn2_22_, internappl0_.Tn_info_ID as Tn7_22_, internappl0_.Tn_is_enroll as Tn3_22_, internappl0_.Tn_order as Tn4_22_, internappl0_.Tn_res as Tn5_22_, internappl0_.Tn_st_userName as Tn6_22_ from intern_apply internappl0_ where internappl0_.Tn_st_userName=?
Hibernate: select internappl0_.Tn_ID as Tn1_22_, internappl0_.Tn_apply_time as Tn2_22_, internappl0_.Tn_info_ID as Tn7_22_, internappl0_.Tn_is_enroll as Tn3_22_, internappl0_.Tn_order as Tn4_22_, internappl0_.Tn_res as Tn5_22_, internappl0_.Tn_st_userName as Tn6_22_ from intern_apply internappl0_ where internappl0_.Tn_st_userName=?
修改后的order为:2
第2学生的姓名为:郭清燕可以看到程序直接跳过了update语句。。哪位高人帮忙解答一下

解决方案 »

  1.   

    刚开始的order是多少,是2还是1.输出来看看。
      

  2.   

    internApply对象必须是从数据库查出来的,而不能是new出来的,你的是怎么来的?
      

  3.   

    看错了,呵呵,看看你的update有没有commit
      

  4.   

    @Component("internApplyDao")
    public class InternApplyDaoImpl implements InternApplyDao {
    HibernateTemplate hibernateTemplate;
    public HibernateTemplate getHibernateTemplate() {
    return hibernateTemplate;
    }
    @Resource
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
    }
    public void delete(Integer stuId, Integer internId) { } public Integer save(InternApply internApply) {
    return (Integer)hibernateTemplate.getSessionFactory().getCurrentSession().save(internApply);
    }
    public void update(InternApply internApply) {
    getHibernateTemplate().update(internApply);
    }
      

  5.   

    没打印日志啊,确切的说,都没用过前段时间也碰过过这个问题:save能执行,update不能执行,是另一个类。我的主要困惑就是update不执行。
      

  6.   

    我也碰到过同样的错误,你应该看看,话短,但是实用,你在做修改的时候,其实踏实先执行查询,假如你是感觉ID修改,你应该先设置一下ID,不然就不会修改成功,形如:
    public void update(UserBean userBean){
    Session session=this.getSession();
    try{
    session.beginTransaction();
    session.update(userBean);
    session.getTransaction().commit();

    }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
    }
    finally{
    session.close();
    }
    }
    public static void main(arg0[]){
                    UserDao dao=new UserDao();
    UserBean bean=new UserBean("张三丰","1","男","1","[email protected]");

    //              设置ID
                    bean.setId(6);
    dao.update(bean);}