2016-07-12 7 views
0

Hibernateを使用するSpringアプリケーションで作業し、DAOレイヤでOracleデータベースの一部の値を更新するUPDATE文を実行しています。HibernateのSQLQuery executeUpdate関数が起動しますが、完全には実行されません

私が夢中ではないことを確認するために、SQL DeveloperでSQL文を実行して、正しく動作することを確認しました。ここに私のDAOコードの一部です:

public void updateObjectInMyTable(SomeClassA objectOfSomeClassA) { 
     Session session = getCurrentSession(); 
     String sql = "UPDATE SCHEMA_NAME.TABLE_XYZ SET FIRST_NAME=:firstName, LAST_NAME=:lastName, ADDRESS=:address, CITY=:city, ZIPCODE=:zipcode WHERE ID_NUMBER = :idNumber"; 
     SQLQuery query = session.createSQLQuery(sql); 
     query.setParameter("firstName", objectOfSomeClassA.getFirstName()); 
     query.setParameter("lastName", objectOfSomeClassA.getLastName()); 
     query.setParameter("address", objectOfSomeClassA.getAddress()); 
     query.setParameter("city", objectOfSomeClassA.getCity()); 
     query.setParameter("zipcode", objectOfSomeClassA.getZipcode()); 
     query.setParameter("idNumber", objectOfSomeClassA.getIdNumber()); 
     query.executeUpdate(); 
    } 

(本物の置換のために用いる貧変数名をすみません。)私は、サーバー上でデバッグを行なったし、私はそれがそれになるquery.executeUpdate()で何らかのエラーが表示されません私のサービス層にある次のステートメントには渡されません。

私が間違っていることは何ですか?

+3

このトランザクションで必要なロックを保持しているコミットされていないトランザクションがある可能性があります。開発環境では、これはしばしばSQL Developerの開発者トランザクションによるものです。 Oracleツールを使用して、ロックを保持しているユーザーが更新を待機しているロックを確認します。 – Rob

+0

@Robありがとうございました。チェックして、私はいくつかの取引を開いていました。 – abhi

答えて

1

あなたの取引はどこですか?

用途:

session.beginTransaction().commit(); 

あなたのコードの最後の行にこれを追加します。

私はこれがあなたを助けてくれることを願っています。

関連する問題