2012-07-24 35 views
0

我有代碼更新數據庫,看起來像這樣的列:的Java與Hibernate數據庫

logger.info("Entering Update Method"); 
     Query query =session.createQuery("update CardMaster cm set cm.otpAmount = :otpAmount" + " where cm.cardNumber = :cardnumber"); 
     double otpAmount= cardMaster.getOtpAmount(); 
     String cardNumber=cardMaster.getCardNumber(); 
     query.setParameter("otpAmount",otpAmount); 
     query.setParameter("cardnumber",cardNumber); 
     query.executeUpdate(); 
     logger.info("cardMasterUpdated successfully"); 

在此我得到otpamount,cardnumber和它給executeUpdate的結果爲1,但它不是反映在數據庫..我打開會議,並在外面正確提交。

而不是使用這個,如果我使用休眠的update()它正確地發生。

你能幫我解決嗎?

+0

您沒有提交交易 – 2012-07-24 14:10:32

回答

0

您必須提交交易。

由於您沒有提交,因此其他進程不會顯示任何內容,例如您用於查看數據庫的工具。

您可以通過session.getTransaction()獲得您的交易。但是,通常您會像這樣手動啓動交易:

Transaction tx = session.beginTransaction(); 
// Do your stuff 
session.flush(); 
tx.commit() 
+0

在提交之前,請不要忘記session.flush()。 – Matt 2012-07-24 20:18:25

+0

感謝您的回覆,我犯了一個邏輯錯誤,那就是問題:(我正在致力traxns correclty以外:) – 2012-07-31 10:06:08