org.springframework.dao.DuplicateKeyException问题解决

org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [INSERT INTO TM_BOOK_KEEPING_TRANSITION(CHANNEL, CONTROL_FLAG, SHEET_INNER_FLAG, DEBIT_CREDIT_FLAG, BUSINESS_DESC, CMMDTY_HEIRARCY, CMMDTY_CLASS, ENTRY_CODE, SUBJECT_ATT, TXN_DATE, SUBJECT_NO, TXN_SEQ_NO, SAP_SYNC, VOCHER_CODE, BILL_NO, TXN_AMOUNT, COMPANY_CODE, BANK_BILL_NO, TXN_PARAM, VOUCHER_NO, CMMDTY_GRP, CUST_CODE, TXN_TYPE, TXN_DESC ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )]; DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;ECAUSR.TM_BOOK_KEEPING_TRANSITION, DRIVER=3.50.152; nested exception is com.ibm.db2.jcc.b.lm: DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;ECAUSR.TM_BOOK_KEEPING_TRANSITION, DRIVER=3.50.152
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:241) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:843) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:288) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:270) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at com.suning.framework.dal.client.support.executor.MappedSqlExecutor.persist(MappedSqlExecutor.java:179) ~[snf-dal-3.0.4.jar:na]
    at com.suning.framework.dal.client.support.DefaultDalClient.persist(DefaultDalClient.java:127) ~[snf-dal-3.0.4.jar:na]
    at com.suning.framework.dal.client.support.DefaultDalClient.persist(DefaultDalClient.java:121) ~[snf-dal-3.0.4.jar:na]
    at com.suning.eca.finance.transition.dao.impl.BookKeepingTransitionDaoImpl.save(BookKeepingTransitionDaoImpl.java:51) ~[eca-service-1.0.0.jar:na]
    at com.suning.eca.finance.transition.service.impl.BookKeepingTransitionServiceImpl.save(BookKeepingTransitionServiceImpl.java:98) ~[eca-service-1.0.0.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at com.suning.intf.framework.service.ServiceAdvice.invoke(ServiceAdvice.java:63) [eca-service-1.0.0.jar:na]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at com.sun.proxy.$Proxy86.save(Unknown Source) [na:na]
    at com.suning.eca.job.accounting.service.impl.SapAccountingJobServiceImpl.processCreditBusiness(SapAccountingJobServiceImpl.java:1025) [eca-service-1.0.0.jar:na]
    at com.suning.eca.job.accounting.service.impl.SapAccountingJobServiceImpl.combinationSapAccountTemp(SapAccountingJobServiceImpl.java:179) [eca-service-1.0.0.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) [spring-tx-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at com.suning.intf.framework.service.ServiceAdvice.invoke(ServiceAdvice.java:63) [eca-service-1.0.0.jar:na]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) [spring-aop-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at com.sun.proxy.$Proxy95.combinationSapAccountTemp(Unknown Source) [na:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
    at com.suning.framework.uts.client.broker.SpringBeanJobBroker.execute(SpringBeanJobBroker.java:37) [utsClient-2.0.3.jar:2.0.3]
    at com.suning.framework.uts.client.core.JobDispatcherServlet$1.run(JobDispatcherServlet.java:239) [utsClient-2.0.3.jar:2.0.3]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
Caused by: com.ibm.db2.jcc.b.lm: DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;ECAUSR.TM_BOOK_KEEPING_TRANSITION, DRIVER=3.50.152
    at com.ibm.db2.jcc.b.wc.a(wc.java:575) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.wc.a(wc.java:57) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.wc.a(wc.java:126) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.tk.b(tk.java:1593) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.tk.c(tk.java:1576) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.t4.db.k(db.java:353) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.t4.db.a(db.java:59) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.t4.t.a(t.java:50) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.t4.tb.b(tb.java:200) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.uk.Gb(uk.java:2355) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.uk.e(uk.java:3129) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.uk.zb(uk.java:568) ~[db2jcc-9.5.3.jar:na]
    at com.ibm.db2.jcc.b.uk.executeUpdate(uk.java:551) ~[db2jcc-9.5.3.jar:na]
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) ~[commons-dbcp-1.2.2.jar:1.2.2]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:845) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$3.doInPreparedStatement(JdbcTemplate.java:1) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]

    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587) ~[spring-jdbc-3.1.4.RELEASE.jar:3.1.4.RELEASE]


唯一性字段重复插入,如果是自增的字段可以做如下处理:

select max(id)+1 as maxId   from TABLE_NAME;


alter table TM_BOOK_KEEPING_TRANSITION alter ID restart with maxId;



你可能感兴趣的:(org.springframework.dao.DuplicateKeyException问题解决)