spring - Parameter instance recId is invalid for the requested conversion. ERRORCODE=-4461 -
i using spring jdbcnamedtemplate insert data in database. other operations (such delete) working fine, while insert getting -4461 error db2.
i went these pages: http://www-01.ibm.com/support/docview.wss?uid=swg21622381
but no help. below snippet of code.
@override public void insert(flight fw) { string sql = "insert flight (flt,leg,org,dst,booked) values (:flt,:leg,:org,:dst,:booked)"; mapsqlparametersource namedparameters = new mapsqlparametersource(); namedparameters.addvalue("flt", fw.getflightnumber()); namedparameters.addvalue("leg", fw.getflightleg()); namedparameters.addvalue("org", fw.getorg()); namedparameters.addvalue("dst", fw.getdst()); namedparameters.addvalue("booked", fw.getbooked()); getnamedparameterjdbctemplate().update(sql, namedparameters);
}
also here flight table schema db2
create table flight ( flt varchar(4) not null, leg varchar(1) not null, org varchar(3), dst varchar(3), booked decimal(3), rec_id int not null generated identity(start 1 increment 1), constraint pk_flight primary key (flt, leg) ); create unique index uq268_flight on flight(rec_id);
and error getting
caused by: com.ibm.db2.jcc.am.sqlsyntaxerrorexception: [jcc][1091][10404][4.13.80] invalid data conversion: parameter instance rec_id invalid requested conversion. errorcode=-4461, sqlstate=42815 @ com.ibm.db2.jcc.am.id.a(id.java:677) @ com.ibm.db2.jcc.am.id.a(id.java:60) @ com.ibm.db2.jcc.am.id.a(id.java:103) @ com.ibm.db2.jcc.am.kc.a(kc.java:774) @ com.ibm.db2.jcc.am.kc.a(kc.java:689) @ com.ibm.db2.jcc.am.go.a(go.java:1583) @ com.ibm.db2.jcc.am.go.setstring(go.java:1538) @ org.jboss.jca.adapters.jdbc.wrappedpreparedstatement.setstring(wrappedpreparedstatement.java:637) @ org.springframework.jdbc.core.statementcreatorutils.setvalue(statementcreatorutils.java:421) [spring-jdbc-4.2.5.release.jar:4.2.5.release] @ org.springframework.jdbc.core.statementcreatorutils.setparametervalueinternal(statementcreatorutils.java:235) [spring-jdbc-4.2.5.release.jar:4.2.5.release] @ org.springframework.jdbc.core.statementcreatorutils.setparametervalue(statementcreatorutils.java:150) [spring-jdbc-4.2.5.release.jar:4.2.5.release] @ org.springframework.jdbc.core.preparedstatementcreatorfactory$preparedstatementcreatorimpl.setvalues(preparedstatementcreatorfactory.java:292) [spring-jdbc-4.2.5.release.jar:4.2.5.release] @ org.springframework.jdbc.core.preparedstatementcreatorfactory$preparedstatementcreatorimpl.createpreparedstatement(preparedstatementcreatorfactory.java:244) [spring-jdbc-4.2.5.release.jar:4.2.5.release] @ org.springframework.jdbc.core.jdbctemplate.execute(jdbctemplate.java:623) [spring-jdbc-4.2.5.release.jar:4.2.5.release] ... 200 more
you can try in code
namedparameters.addvalue("flt", fw.getflightnumber(),types.varchar); namedparameters.addvalue("leg", fw.getflightleg(),types.varchar); namedparameters.addvalue("org", fw.getorg(),types.varchar); namedparameters.addvalue("dst", fw.getdst(),types.varchar); namedparameters.addvalue("booked", fw.getbooked(),types.double)
this run correctly,
preparedstatement ps = connection.preparestatement( "insert flight (flt,leg,org,dst,booked) values (?,?,?,?,?)"); ps.setstring(1,"b"); ps.setstring(2 ,"b"); ps.setstring(3 ,"b"); ps.setstring(4 ,"b"); ps.setdouble(5 ,1); ps.executeupdate(); ps.close(); user@host:/db2inst1:>db2 "select * flight" flt leg org dst booked rec_id ---- --- --- --- ------ ----------- 1. 1 b b b b 1. 2 2 record(s) selected.
Comments
Post a Comment