2013-09-26 38 views
-1

我有以下的更新和使用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; 
} 

當他們被調用時,他們似乎沒有任何效果。數據實際上未在數據庫中更新或刪除。

這是怎麼造成的,我該怎麼解決呢?

+0

請編輯您的帖子,說明你有什麼問題。 「不想更新或刪除」不會告訴我們任何事情。完成之後,請編輯您的帖子以[更簡潔](http://sscce.org/)。 – patstuart

+0

@patstuart謝謝你,我現在要做... – Cokeehc

回答

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(); 
    } 
} 

也許有在代碼中更多的錯誤。我沒有深入研究它。 也許這已經解決了你的問題。否則,我們必須進一步檢查。

+0

謝謝你的快速回答,現在... ...在你的幫助下,我的代碼是 但這不起作用man,給我發一個錯誤「Tx」變量可能沒有初始化... – Cokeehc

+0

沒有什麼讓人開心,我試過everythring,但問題仍然存在,查詢沒有任何影響:/! – Cokeehc

+0

請編輯您的初始文章到您的代碼的最新版本,並告訴我們會發生什麼。 –