2016-08-23 3 views
1

Я пытаюсь выполнить UPDATE в таблице строк SnappyData с помощью API JDBC и NamedParameterJdbcTemplate Spring.Невозможно выполнить NamedParameterJdbcTemplate UPDATE

Ошибка:

Вызванный: java.sql.SQLException: (SQLSTATE = XCL14 Уровень важности = 20000) Положение столбца '1' находится вне диапазона. Количество столбцов для этого ResultSet равно «0». в com.pivotal.gemfirexd.internal.shared.common.error.DefaultExceptionFactory40.getSQLException (DefaultExceptionFactory40.java:121) в com.pivotal.gemfirexd.internal.shared.common.error.ExceptionUtil.newSQLException (ExceptionUtil.java : 148) at com.pivotal.gemfirexd.internal.client.am.SqlException.getSQLException (SqlException.java:419) at com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.getColumnType (ColumnMetaData.java:644) на com.pivotal.gemfirexd.internal.client.am.PreparedStatement.setString (PreparedStatement.java:1203) на com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setString (HikariProxyPreparedStatement.java) в org.springframework.jdbc .core.StatementCreatorUtils.setValue (StatementCreatorUtils.java:429) в org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal (StatementCreatorUtils.java:235) в org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue (StatementCreatorUtils.java:150) в org.springframework.jdbc.core. PreparedStatementCreatorFactory $ PreparedStatementCreatorImpl.setValues ​​(PreparedStatementCreatorFactory.java:292) в org.springframework.jdbc.core.PreparedStatementCreatorFactory $ PreparedStatementCreatorImpl.createPreparedStatement (PreparedStatementCreatorFactory.java:244) в org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate. java: 623) ... 70 еще Вызвано: ERROR XCL14: Положение столбца «1» выходит за пределы допустимого диапазона. Количество столбцов для этого ResultSet равно «0». на com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.checkForValidColumnIndex (ColumnMetaData.java:856) в com.pivotal.gemfirexd.internal.client.am.ColumnMetaData.getColumnType (ColumnMetaData.java:638)

NamedParameter SQL выглядит следующим образом:

UPDATE generic_table_10 SET (VERSION =: версия, FK_1 =: Ф.К., col_1 =: col1, COL_2 =: col2, COL_3 =: col3, COL_4 =: COL4, COL_5 =: col5, COL_6 =: col6, COL_7 =: col7, COL_8 =: col8, COL_9 =: col9, COL_10 =: col10) WHERE (ID =: id и VERSION =: oldVersion)

ПРИМЕЧАНИЕ: тип столбца VERSION является Integer. Все остальные типы столбцов - это String.

SQL, выглядит так, что, кажется, хорошо для меня?????

UPDATE generic_table_10 SET (VERSION =, FK_1 =, col_1 =, COL_2 =, COL_3 =, COL_4 =, COL_5 = ?, COL_6 =?, COL_7 =?, COL_8 =?, COL_9 =?, COL_10 =?) WHERE (ID =? И VERSION =?)

ответ

0

Я решил это сам ... Синтаксис плох. Я удалил круглую скобку, и теперь она работает. Вот сейчас SQL:

UPDATE generic_table_10 SET VERSION =?, FK_1 =? , COL_1 =?, COL_2 =?, COL_3 =?, COL_4 =?, COL_5 =?, COL_6 =?, COL_7 =?, COL_8 =?, COL_9 =?, COL_10 =? ГДЕ ID =? и ВЕРСИЯ =?

Должен сказать, несмотря на отсутствие навыков синтаксиса SQL, сообщение об ошибке было немного обманчивым!