2016-07-12 20 views
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()它得到的任何錯誤行,並沒有傳遞給我的服務層中的下一個語句。

我做錯了什麼?

+3

您可能有一個未提交的交易持有此交易所需的鎖定。在開發環境中,這通常是由於SQL Developer中的開發人員事務。使用Oracle工具查看您的更新等待誰鎖定的鎖定。 – Rob

+0

@Rob謝謝Rob,你說得對。選中後,我開了幾個交易。 – abhi

回答

1

您的交易在哪裏?

用途:

session.beginTransaction().commit(); 

在你的代碼的最後一行添加此。

我希望這可以幫助你。

相關問題