2012-07-24 2 views
0

J'ai le code qui met à jour une colonne dans une base de données qui ressemble à ceci:Java avec Hibernate Database

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"); 

Dans ce que je reçois otpamount, cardNumber et il donne suite à executeUpdate comme 1, mais ce n'est pas reflétant dans la base de données .. J'ouvre la session et m'engage correctement dehors. Au lieu de l'utiliser, si j'utilise update() d'Hibernate, cela se passe correctement.

Pouvez-vous m'aider?

+0

vous n'avez pas commis la transaction –

Répondre

0

Vous devez valider la transaction.

Puisque vous ne validez pas, rien n'est visible pour les autres processus, comme l'outil que vous utilisez pour afficher votre base de données.

Vous pouvez obtenir votre transaction avec session.getTransaction(). Cependant, normalement vous démarrez votre transaction manuellement comme ceci:

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

ne pas oublier un session.flush() aussi bien avant de vous engager. – Matt

+0

Merci pour la réponse, j'ai fait une erreur logique et c'était le problème :(et je suis en train de commettre la correction corrects à l'extérieur :) –