0
使用Hibernate的Spring應用程序,在我的DAO層中,我們運行UPDATE語句來更新Oracle數據庫中的某些值。Hibernate的SQLQuery executeUpdate函數啓動,但沒有完全執行
爲了確保我不瘋狂,我在SQL Developer中運行了這個語句,以確保它能正常工作。這裏是我的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()
它得到的任何錯誤行,並沒有傳遞給我的服務層中的下一個語句。
我做錯了什麼?
您可能有一個未提交的交易持有此交易所需的鎖定。在開發環境中,這通常是由於SQL Developer中的開發人員事務。使用Oracle工具查看您的更新等待誰鎖定的鎖定。 – Rob
@Rob謝謝Rob,你說得對。選中後,我開了幾個交易。 – abhi