2017-07-28 85 views
0

我使用Hibernate的5和Spring 4.執行下面的SQL查詢和獲取錯誤休眠:值java.sql.SQLException:列數並不在致1排

匹配值數列數在第1行

SQLQuery query = getSessionFactory().getCurrentSession().createSQLQuery(" update irms_deleted_data SET reason=:reasonStr WHERE irms_id=:id "); 
     query.setString("reasonStr", "ABCD1234"); 
     query.setInteger("id", irmsData.getId()); 
     query.executeUpdate(); 

不匹配值 計任何想法,爲什麼我收到此錯誤?

+0

發佈的代碼看起來很好 – StanislavL

+0

不'createSqlQuery'創建一個本地查詢,所以你必須爲你的字符串字段使用引號?像這樣:'... set reason =':reasonStr'...' – Patrick

+0

嗨,帕特里克,不,我們不必把引號周圍:reasonStr – deepakl

回答

0

我嘗試以下的(簡單休眠例子)

創建表irms_deleted_data(原因VARCHAR2(10),irms_id數(11,0)); 插入到IRMS_DELETED_DATA值('xyz',1);

寫了一個函數:

private void updateirmsDeletedData() { 
Transaction tx = null; 
Session session = factory.openSession(); 
try { 
tx = session.beginTransaction(); 
SQLQuery query = session.createSQLQuery("update irms_deleted_data SET reason=:reasonStr WHERE irms_id=:id"); 
query.setString("reasonStr", "ABCD1234"); 
query.setInteger("id", 1); 
query.executeUpdate(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
tx.commit(); 
session.close(); 
} 

和工作....

你也可以檢查是否有上irms_deleted_data觸發該做的事情導致了問題...