hql语句执行update操作,数据库里的东西竟然没改掉?if(bloger.getEmail()!=null){
hql+="update Users u set u.email='"+bloger.getEmail().trim()+"'";
}
if(bloger.getQq()!=null){
hql+=",u.qq='"+bloger.getQq()+"'";
}
if(bloger.getAddress()!=null){

hql+=",u.address='"+bloger.getAddress()+"'";
}
hql+="where u.id="+bloger.getId();
Query query=sessionFactory.openSession().createQuery(hql);
int num=query.executeUpdate();
if(num<0){
System.out.println("not excute update");
}
控制台没有报错,也显示 执行了update语句:
Hibernate: update webblog.dbo.users set email='[email protected]', qq='793492939', address='广东'
但就是数据库里的东西没改掉,请好心人帮忙看下,谢谢

解决方案 »

  1.   

    好像没有commit(); 提交事物的吧
      

  2.   

    没有用Spring管理的话,就得自己写事务了
      

  3.   

    没试过update写hql语句。
    或许
    <tx:method name="update*" propagation="REQUIRED" />
    看看你那个方法名。
      

  4.   

    Query query=sessionFactory.openSession().createQuery(hql);
    这个是交给SPRING么?
      

  5.   

    hql+="update Users u set u.email='"+bloger.getEmail().trim()+"'";
    修改Users?应该是entity实体内吧 不过 这样 他怎么知道是其中的哪条?
    我没有这样用过update 不过 我觉得 是不是 要给条件
      

  6.   

    交给Spring管理了也得有提交动作,另外我觉得修改得有where条件
      

  7.   

    有where条件啊,你没看到吗,在控制台 能看到执行了这条 update语句,对象也暂时被改掉了,但就是数据库没有更新
      

  8.   

    一般的话都是先把数据查询出来放在一个类里,再把类里面的信息改了,然后调用session.update(obj)就ok
      

  9.   

    sessionFactory是从spring里来的
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation">
    <value>classpath:hibernate.cfg.xml</value>
    </property>
      

  10.   


    你没看下面还有一个where条件吗
      

  11.   

    你那方法在biz里面是update开头得吗?反正就得跟你配置的要相符吧。
    还是建议你不要写hql语句,我们那样写会挨骂得。只有查询才写hql语句。
      

  12.   

    你要么显示提交事务commit
    要么用spring 管理事务来提交 不然不会修改数据库的 你执行HQL后改的只是缓存里的数据而已