更新和删除查询没有任何效果

时间:2013-09-26 20:56:56

标签: hibernate

我使用Hibernate进行了以下更新和删除查询:

public boolean update(CuentaUsuario usuario) {
    boolean flag = false;
    Session sesion = HibernateUtil.getSessionFactory().openSession();
    Transaction tx = sesion.beginTransaction();
    try {
        CuentaUsuario usuariodb = (CuentaUsuario) sesion.load(CuentaUsuario.class, usuario.getIdcuentaUsuario());
        usuariodb.setUsername(usuario.getUsername());
        usuariodb.setIdRol(usuario.getIdRol());
        usuariodb.setCorreo(usuario.getCorreo());
        sesion.saveOrUpdate(usuariodb);
        tx.commit();
        flag = true;
    } catch (Exception ex) {
        if (tx != null) {
            tx.rollback();
            flag = false;
        }
    }
    return flag;
}

当它们被调用时,它们似乎没有任何效果。数据实际上并未在数据库中更新或删除。

这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:1)

在阅读代码时引起我注意的第一件事是:

sesion.beginTransaction();
// ...    
sesion.beginTransaction().commit();
// ...
sesion.beginTransaction().rollback();

所以基本上你在这里做的是:

  • "开始新的交易"
  • "启动新交易并立即提交"
  • "启动新交易并立即执行回滚"

这没有任何意义。您不应每次在提交和回滚时启动新事务,而是在最初启动的事务上执行它。您的具体问题是由于您从未提交真实交易而引起的。

通常的做法是:

Transaction tx = null;
try{
    tx = session.beginTransaction();
    // perform some operations on your entities
    tx.commit();
}
catch(SomeException ex){
    if(tx != null){
        tx.rollback();
    }
}

也许代码中有更多错误。我没有深入研究它。 也许这已经解决了你的问题。否则我们必须进一步检查。