0

次のようなデータベースの列を更新するコードがあります。

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()、Hibernateを使用すると、正しく実行されます。

これから私を助けてくれませんか?

4

1 に答える 1

0

トランザクションをコミットする必要があります。

コミットしないため、DB を表示するために使用しているツールなど、他のプロセスには何も表示されません。

で取引を取得できますsession.getTransaction()。ただし、通常は次のように手動でトランザクションを開始します。

Transaction tx = session.beginTransaction();
// Do your stuff
session.flush();
tx.commit()
于 2012-07-24T14:52:17.697 に答える