session.beginTransaction(); // 开启事务
System.out.println("111111111111111111111");
session.update(usersVo); // 修改数据
System.out.println("222222222222222222222");
session.getTransaction().commit(); // 提交事务经过我的检验发现无法执行update函数的下一句输出,可以执行update函数上一句的输出。
我也在网上查看了相关问题都没有得到解决。MyEclipse也没有报错。其它配置也没问题。求解:

解决方案 »

  1.   


    Hibernate: select usersvo0_.id as id0_, usersvo0_.name as name0_, usersvo0_.age as age0_, usersvo0_.tel as tel0_, usersvo0_.address as address0_ from yonghu.users usersvo0_这样报错?
      

  2.   


    package com.cn.dao;import java.util.List;import org.hibernate.Session;import com.cn.factory.HibernateSessionFactory;
    import com.cn.vo.UsersVo;public class HibernateDao {
    public void add(UsersVo usersVo) { // 添加数据的方法
    Session session = // 调用HibernateSessionFactory的会话
    HibernateSessionFactory.getSession();
    try {
    session.beginTransaction(); // 开启事务
    session.persist(usersVo); // 将对象添加到数据库
    session.getTransaction().commit(); // 提交事务
    } catch (Exception e) {
    session.getTransaction().rollback();// 回滚事务
    } finally {
    session.close(); // 关闭session
    }
    }
    public void modifyUsers(UsersVo usersVo) { // 修改数据的方法
    Session session = HibernateSessionFactory.getSession();
    try {
    session.beginTransaction(); // 开启事务
    session.update(usersVo); // 修改数据
    session.getTransaction().commit(); // 提交事务
    } catch (Exception e) {
    session.getTransaction().rollback();// 回滚事务
    } finally {
    session.close(); // 关闭session
    }
    }
    // 从数据库中删除数据
    public void delete(int id) {
    Session session = HibernateSessionFactory.getSession();
    try {
    session.beginTransaction(); // 开启事务
    UsersVo users = (UsersVo) session.get(UsersVo.class, id);
    session.delete(users); // 删除删除数据行
    session.getTransaction().commit(); // 提交事务
    } catch (Exception e) {
    session.getTransaction().rollback(); //回滚事务
    } finally {
    session.close(); // 关闭session
    }
    }
    @SuppressWarnings("unchecked") // 根据ID查找数据
    public UsersVo queryUsersById(int id) {
    Session session = HibernateSessionFactory.getSession();
    UsersVo users = (UsersVo) session.get(UsersVo.class, id);
    return users;
    } @SuppressWarnings("unchecked")
    public List<UsersVo> showlist(String hql) { // 查找多挑数据
    Session session =  HibernateSessionFactory.getSession();
    try {
    session.beginTransaction(); // 开启事务
    return session.createQuery(hql).list(); // 使用hql查询结果,返回List对象
    } finally {
    session.getTransaction().commit(); // 提交事务
    session.close(); // 关闭session
    }
    }
    }就修改和添加的功能不能实现?
      

  3.   

    都脱管了 你怎么update都没用 S B
      

  4.   

    session.update(usersVo); // 修改数据你把操作usersVo的操作写在 session.beginTransaction(); // 开启事务 之后看看。
      

  5.   

    你是不是设置了datasource里面的一个自动提交的变量
      

  6.   

    肯定是不会执行update的方法的了,因为系统不知道你要更新的是哪个对象,需要先把你要更新的对象查询出来,然后把新的属性赋予你要更新的对象,再用update的方法更新这个属性改变之后的对象,这样就能发出update语句了。
    UsersVo usersVo = session.load(UserVo.CLass,userVoId);
    userVo.setXX();
    ....
    session.update(usersVo);
    这样就可以更新对象了。usersVo 这个参数就是你选择要更新那个对象的ID。
      

  7.   

    补充一下: userVOId 这个参数你要选择更新对象的Id  上面最后一句打错了。
      

  8.   

    这个应该是你的对象里面没有id
    如果你是在jsp页面的话 可以设置一个hidden域,隐藏id
    <input type="hidden" value="${requestScope.user.id}"/>
    如果只是junit测试的话  你就必须先把对象查出来,起码你的对象里得有一个id,表明他在数据库里存在呀 
      

  9.   

    照您那么改之后的代码:public void modifyUsers(UsersVo usersVo) { // 修改数据的方法
    Session session = HibernateSessionFactory.getSession();
    //int userVoId=usersVo.getId();
    int userVoId=0;
    UsersVo usersVo1 = (UsersVo) session.load(UsersVo.class,userVoId);
    usersVo.setId(userVoId);
    try {
    session.beginTransaction(); // 开启事务
    session.update(usersVo1); // 修改数据
    session.getTransaction().commit(); // 提交事务
    } catch (Exception e) {
    session.getTransaction().rollback();// 回滚事务
    } finally {
    session.close(); // 关闭session
    }
    }照您那么改之后,出现这种情况:org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.cn.vo.UsersVo#0]
    org.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:27)
    org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:128)
    org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:161)
    org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
      

  10.   

    打个比方 
    你页面上显示的信息在数据库中有以下几个字段:id/userName/age
    然后你在页面上用c:if循环取值并打印显示出来  比如是<td>${bean.id}<td/><td>${bean.userName}<td/><td>${bean.age}<td/>
    然后你要修改其中一条   你必须先写一个获取要修改对象的id值的方法   然后才能修改该id所对印的里面的数据
    如果你没获取id   那程序怎么知道你要修改的是哪一条数据
      

  11.   

    hibernate对象的三种状态,你都搞清楚了么
    Transient
    Persistent
    Detached
      

  12.   

    session.save(usersVo1);改为
    session.saveOrUpdate(usersVo1);