public void updateMapHistoryNPatrolObjByHQL(String flag,String jhxwguid)throws Exception{
        Session session = this.getSession();
        Transaction transaction = session.beginTransaction();
        System.out.println("dao updateMapHistoryNPatrolObjByHQL come in...");//1
        String hql = "update MapHistoryNPatrol set FLAG= '"+flag+"' where JHXWGUID = '"+jhxwguid+"'";
        Query query = session.createQuery(hql);
        System.out.println("dao updateMapHistoryNPatrolObjByHQL behind hql ...");//2
        query.executeUpdate();
        System.out.println("dao updateMapHistoryNPatrolObjByHQL was executed...");//3
        transaction.commit();
    }代码如上,我想通过hibernate hql方式update 对象,执行过程中 到2就不执行了。
也就是说query.executeUpdate();开始(包含)往后就没有执行了。
控制台也不报异常,到底怎么回事?
诸位大侠帮帮忙......

解决方案 »

  1.   

    Query query = session.createQuery(hql);
    LZ用Query做变更吗
      

  2.   

    对啊 ,update一个字段
      

  3.   

    Query。。是查询接口呀
    如果要更新用session接口里的update方法
      

  4.   

    我只想更新一个字段的值,update不会全部更新吧?
    是不用update(String arg1,Objct obj)这个方法?
    Stirng传的是hql语句,Object传入对象实力类吗?
      

  5.   

      Query query = session.createQuery(hql);我感觉到这句话就错了呢,你打印一下this.session看是不是你要的啊
      

  6.   

    hql不能执行更新   用session的update方法
      

  7.   

    你后面不是加where做限定了吗?怎么会全部更新呢。
      

  8.   

    update的问题是 会 更新所有的字段,我只更新 一个字段,这个样其它的字段都会置为空。
    不知道有没有什么办法?
      

  9.   

    在你对象映射文件里面用dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
      

  10.   

    不报异常?try catch看看。。
      

  11.   

    肯定 try catch了,没有try catch习惯的程序员还不合格呢
      

  12.   

    我记得hql好像没有update操作吧,更新的都是查出对象修改后在flush的吧
      

  13.   

    query是查询的吧,update好像你直接把bean里的对象修改一下,调用session的update()就可以了啊
    比如user.setName("xxxx");然后session.update(user)