Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取java.sql.SQLFeatureNotSupportedException:不支持的功能:checkValidIndex异常_Java_Spring Jdbc - Fatal编程技术网

获取java.sql.SQLFeatureNotSupportedException:不支持的功能:checkValidIndex异常

获取java.sql.SQLFeatureNotSupportedException:不支持的功能:checkValidIndex异常,java,spring-jdbc,Java,Spring Jdbc,我在运行下面的代码时遇到异常。它是用Java8编写的,并使用OJDBC8JAR进行数据库连接。db是Oracle 12.2.0.1.0 String insertQuery = generateSql(Utils.getStringArray(ApplicationConstants.INSERT_REQUEST_RESPONSE)); srpJdbcTemplate.update(insertQuery,new Object[] { null, broadSoftResponse.getTr

我在运行下面的代码时遇到异常。它是用Java8编写的,并使用OJDBC8JAR进行数据库连接。db是Oracle 12.2.0.1.0

String insertQuery = generateSql(Utils.getStringArray(ApplicationConstants.INSERT_REQUEST_RESPONSE));

srpJdbcTemplate.update(insertQuery,new Object[] { null, broadSoftResponse.getTransType(), broadSoftResponse.getRequestXml(),
broadSoftResponse.getResponseXml(), null, null, null, null, null,
ApplicationConstants.SOURCE_SYSTEM, ApplicationConstants.SOURCE_SYSTEM_ID,
broadSoftResponse.getTrackingId(), null });
使用该查询-
插入接口转换(INT转换ID、ORD转换详细ID、转换类型、请求、响应、状态、错误代码、错误消息、开始时间、结束时间、源系统、源系统ID、跟踪ID、参考1)值(SRP.INT转换ID顺序、NEXTVAL、、、、、、、、、、、、、、<)/code>

例外情况-

org.springframework.jdbc.core.JdbcTemplate  - Executing prepared SQL statement [INSERT INTO SRP.INTERFACE_TRANS(INT_TRANS_ID,ORD_NP_DETAIL_ID,TRANS_TYPE,REQUEST,RESPONSE,STATUS,ERROR_CODE,ERROR_MESSAGE,START_TIME,END_TIME,SOURCE_SYSTEM,SOURCE_SYSTEM_ID,TRACKING_ID,REF1) VALUES(SRP.INT_TRANS_ID_SEQ.NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?)]
org.springframework.jdbc.datasource.DataSourceUtils  - Fetching JDBC Connection from DataSource
org.springframework.jdbc.core.StatementCreatorUtils  - Could not check database or driver name
java.sql.SQLFeatureNotSupportedException: Unsupported feature: checkValidIndex
    at oracle.jdbc.driver.OracleParameterMetaData.checkValidIndex(OracleParameterMetaData.java:196)
    at oracle.jdbc.driver.OracleParameterMetaData.getParameterType(OracleParameterMetaData.java:307)
    at org.springframework.jdbc.core.StatementCreatorUtils.setNull(StatementCreatorUtils.java:241)
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:214)
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:145)
    at org.springframework.jdbc.core.ArgPreparedStatementSetter.doSetValue(ArgPreparedStatementSetter.java:65)
    at org.springframework.jdbc.core.ArgPreparedStatementSetter.setValues(ArgPreparedStatementSetter.java:46)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:816)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:1)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:876)
请分享您的想法以解决此问题。

如果您有空值,请使用,这样您可以告诉
JdbcTemplate
值类型是什么

这样,它就不需要为空值调用
getParameterType
JDBC方法

范例

当然,不知道您的列类型实际上是什么,这只是一个示例

srpJdbcTemplate.update(insertQuery, new Object[] {
    null, broadSoftResponse.getTransType(), broadSoftResponse.getRequestXml(),
    broadSoftResponse.getResponseXml(), null, null, null, null, null,
    ApplicationConstants.SOURCE_SYSTEM, ApplicationConstants.SOURCE_SYSTEM_ID,
    broadSoftResponse.getTrackingId(), null
}, new int[] {
    Types.INTEGER, Types.INTEGER, Types.VARCHAR,
    Types.VARCHAR, Types.DATE, Types.DATE, Types.INTEGER, Types.VARCHAR, Types.VARCHAR,
    Types.VARCHAR, Types.INTEGER,
    Types.INTEGER, Types.VARCHAR
});