Spring Batch Writer throws java.sql.SQLException: Unsupported feature -


i facing challenge in retrieving auto generated column of oracle table in spring batch poc.

this poc reads data flat file , loads oracle table. trying use oracle sequence generate primary key table , retrieve upon successful insertion of row spring batch writer implementation. throws folllowing error.

org.springframework.jdbc.uncategorizedsqlexception:  preparedstatementcallback; uncategorized sqlexception sql 

i not sure missing or issue related oracle driver. need valuable inputs.

specifications:

oracle database version  11.1.0.7 oracle driver added maven proj  ojdbc14-10.1.0.5.jar jdk version 1.8 spring.version 4.0.5.release spring.jdbc.version 4.0.5 spring.batch.version 3.0.4.release 

my job.xml

<bean class="org.springframework.jdbc.core.namedparam.namedparameterjdbctemplate" id="namedparameterjdbctemplate"> <constructor-arg ref="datasource"/> </bean> 

my customeritemwriter class:

    public class customitemwriter implements itemwriter<permission> {  private final static string insert_sql = "insert customers (cust_id,firstname,lastname,created_date) values (cust_id_seq.nextval,:firstname,:lastname,:createddate)";      @autowired     private namedparameterjdbctemplate namedparameterjdbctemplate;      @override     public void write(list<? extends customer> customers) throws exception     {         for( customer customer : customers )         {             mapsqlparametersource namedparameters = new mapsqlparametersource();             namedparameters.addvalue("firstname", customer.getldapuserid());             namedparameters.addvalue("lastname", customer.getroleid());                         namedparameters.addvalue("createddate", customer.getcreateddate());              final keyholder holder = new generatedkeyholder();             this.namedparameterjdbctemplate.update( insert_sql, namedparameters, holder, new string[] {"cust_id" } );             number generatedid = holder.getkey();             system.out.println("oracle seq value " + generatedid.intvalue());         }     } 

exception received while executing:

    aug 24, 2016 12:02:56 org.springframework.context.support.classpathxmlapplicationcontext preparerefresh info: refreshing org.springframework.context.support.classpathxmlapplicationcontext@728938a9: startup date [wed aug 24 00:02:56 edt 2016]; root of context hierarchy aug 24, 2016 12:02:56 org.springframework.beans.factory.xml.xmlbeandefinitionreader loadbeandefinitions info: loading xml bean definitions class path resource [meta-inf/spring/job-config.xml] aug 24, 2016 12:02:56 org.springframework.beans.factory.xml.xmlbeandefinitionreader loadbeandefinitions info: loading xml bean definitions class path resource [meta-inf/spring/context-config.xml] aug 24, 2016 12:02:56 org.springframework.beans.factory.support.defaultlistablebeanfactory registerbeandefinition info: overriding bean definition bean 'customreader': replacing [generic bean: class [org.springframework.batch.item.file.flatfileitemreader]; scope=step; abstract=false; lazyinit=false; autowiremode=0; dependencycheck=0; autowirecandidate=false; primary=false; factorybeanname=null; factorymethodname=null; initmethodname=null; destroymethodname=null; defined in class path resource [meta-inf/spring/context-config.xml]] [root bean: class [org.springframework.aop.scope.scopedproxyfactorybean]; scope=; abstract=false; lazyinit=false; autowiremode=0; dependencycheck=0; autowirecandidate=true; primary=false; factorybeanname=null; factorymethodname=null; initmethodname=null; destroymethodname=null; defined in beandefinition defined in class path resource [meta-inf/spring/context-config.xml]] aug 24, 2016 12:02:56 org.springframework.jdbc.datasource.drivermanagerdatasource setdriverclassname info: loaded jdbc driver: oracle.jdbc.xa.client.oraclexadatasource aug 24, 2016 12:02:57 org.springframework.batch.core.launch.support.simplejoblauncher afterpropertiesset info: no taskexecutor has been set, defaulting synchronous executor. aug 24, 2016 12:02:57 org.springframework.jdbc.datasource.drivermanagerdatasource setdriverclassname info: loaded jdbc driver: oracle.jdbc.xa.client.oraclexadatasource aug 24, 2016 12:03:00 org.springframework.batch.core.launch.support.simplejoblauncher run info: job: [flowjob: [name=gcmpbatchfeedjob]] launched following parameters: [{date=1472011377348, inputfile=c:/work/batchpoc/springbatch/gcmpbatchfeed/target/gcmpfeeddata1.csv}] aug 24, 2016 12:03:06 org.springframework.batch.core.job.simplestephandler handlestep info: executing step: [importfilestep] aug 24, 2016 12:03:09 org.springframework.beans.factory.xml.xmlbeandefinitionreader loadbeandefinitions info: loading xml bean definitions class path resource [org/springframework/jdbc/support/sql-error-codes.xml] aug 24, 2016 12:03:09 org.springframework.jdbc.support.sqlerrorcodesfactory <init> info: sqlerrorcodes loaded: [db2, derby, h2, hsql, informix, ms-sql, mysql, oracle, postgresql, sybase] aug 24, 2016 12:03:09 org.springframework.batch.core.step.abstractstep execute severe: encountered error executing step importfilestep in job gcmpbatchfeedjob org.springframework.jdbc.uncategorizedsqlexception: preparedstatementcallback; uncategorized sqlexception sql [insert customers (cust_id,firstname,lastname,created_date) values (cust_id_seq.nextval, ?, ?, ?)]; sql state [null]; error code [17023]; unsupported feature; nested exception java.sql.sqlexception: unsupported feature     @ org.springframework.jdbc.support.abstractfallbacksqlexceptiontranslator.translate(abstractfallbacksqlexceptiontranslator.java:84)     @ org.springframework.jdbc.support.abstractfallbacksqlexceptiontranslator.translate(abstractfallbacksqlexceptiontranslator.java:81)     @ org.springframework.jdbc.support.abstractfallbacksqlexceptiontranslator.translate(abstractfallbacksqlexceptiontranslator.java:81)     @ org.springframework.jdbc.core.jdbctemplate.execute(jdbctemplate.java:660)     @ org.springframework.jdbc.core.jdbctemplate.update(jdbctemplate.java:943)     @ org.springframework.jdbc.core.namedparam.namedparameterjdbctemplate.update(namedparameterjdbctemplate.java:344)     @ com.comp.sbatch.writer.customitemwriter.write(customitemwriter.java:171)     @ org.springframework.batch.core.step.item.simplechunkprocessor.writeitems(simplechunkprocessor.java:175)     @ org.springframework.batch.core.step.item.simplechunkprocessor.dowrite(simplechunkprocessor.java:151)     @ org.springframework.batch.core.step.item.simplechunkprocessor.write(simplechunkprocessor.java:274)     @ org.springframework.batch.core.step.item.simplechunkprocessor.process(simplechunkprocessor.java:199)     @ org.springframework.batch.core.step.item.chunkorientedtasklet.execute(chunkorientedtasklet.java:75)     @ org.springframework.batch.core.step.tasklet.taskletstep$chunktransactioncallback.dointransaction(taskletstep.java:406)     @ org.springframework.batch.core.step.tasklet.taskletstep$chunktransactioncallback.dointransaction(taskletstep.java:330)     @ org.springframework.transaction.support.transactiontemplate.execute(transactiontemplate.java:133)     @ org.springframework.batch.core.step.tasklet.taskletstep$2.doinchunkcontext(taskletstep.java:271)     @ org.springframework.batch.core.scope.context.stepcontextrepeatcallback.doiniteration(stepcontextrepeatcallback.java:77)     @ org.springframework.batch.repeat.support.repeattemplate.getnextresult(repeattemplate.java:368)     @ org.springframework.batch.repeat.support.repeattemplate.executeinternal(repeattemplate.java:215)     @ org.springframework.batch.repeat.support.repeattemplate.iterate(repeattemplate.java:144)     @ org.springframework.batch.core.step.tasklet.taskletstep.doexecute(taskletstep.java:257)     @ org.springframework.batch.core.step.abstractstep.execute(abstractstep.java:198)     @ org.springframework.batch.core.job.simplestephandler.handlestep(simplestephandler.java:148)     @ org.springframework.batch.core.job.flow.jobflowexecutor.executestep(jobflowexecutor.java:64)     @ org.springframework.batch.core.job.flow.support.state.stepstate.handle(stepstate.java:67)     @ org.springframework.batch.core.job.flow.support.simpleflow.resume(simpleflow.java:165)     @ org.springframework.batch.core.job.flow.support.simpleflow.start(simpleflow.java:144)     @ org.springframework.batch.core.job.flow.flowjob.doexecute(flowjob.java:134)     @ org.springframework.batch.core.job.abstractjob.execute(abstractjob.java:304)     @ org.springframework.batch.core.launch.support.simplejoblauncher$1.run(simplejoblauncher.java:135)     @ org.springframework.core.task.synctaskexecutor.execute(synctaskexecutor.java:50)     @ org.springframework.batch.core.launch.support.simplejoblauncher.run(simplejoblauncher.java:128)     @ com.comp.sbatch.app.main(app.java:35) caused by: java.sql.sqlexception: unsupported feature     @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:125)     @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:162)     @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:227)     @ oracle.jdbc.driver.databaseerror.throwunsupportedfeaturesqlexception(databaseerror.java:537)     @ oracle.jdbc.driver.physicalconnection.preparestatement(physicalconnection.java:3094)     @ org.springframework.jdbc.core.preparedstatementcreatorfactory$preparedstatementcreatorimpl.createpreparedstatement(preparedstatementcreatorfactory.java:233)     @ org.springframework.jdbc.core.jdbctemplate.execute(jdbctemplate.java:638)     ... 29 more 

you need switch newer driver fits database version. in case, should ojdbc6.jar (but not ojdbc7.jar used oracle 12 , has issues oracle 11).


Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -