Я пытаюсь вызвать хранимую процедуру для создания элемента в таблице SQL. Когда код запускается, хранимая процедура запускается, и элемент создается, но генерирует эту ошибку. Значения, хранящиеся в таблице, являются правильными, а ключ генерации генерирует правильный ключ.Uncategorized SQLException Jdbc Template
Вот мой создать функцию, где я создаю карту параметров:
public int create(Job job) throws DataAccessException, NullPointerException {
Assert.notNull(job,"Job must not be null.");
Assert.notNull(job.getSite(),"Site must not be null.");
KeyHolder keyHolder = new GeneratedKeyHolder();
final String columnNames[] = {"id"};
MapSqlParameterSource params = params("intSiteId",job.getSite().getId())
.addValue("dtmStart", job.getStartDate() == null ? null : dateTimeString(job.getStartDate()))
.addValue("dtmEnd", job.getEndDate() == null ? null : dateTimeString(job.getEndDate()))
.addValue("intManualFl",job.isManual());
getTemplate().update(getSql("create"), params, keyHolder, columnNames);
return keyHolder.getKey().intValue();
}
функция обновления, которая в NamedParameterJdbcTemplate Класс
@Override
public int update(
String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, String[] keyColumnNames)
throws DataAccessException {
ParsedSql parsedSql = getParsedSql(sql);
String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource);
Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, null);
List<SqlParameter> declaredParameters = NamedParameterUtils.buildSqlParameterList(parsedSql, paramSource);
PreparedStatementCreatorFactory pscf = new PreparedStatementCreatorFactory(sqlToUse, declaredParameters);
if (keyColumnNames != null) {
pscf.setGeneratedKeysColumnNames(keyColumnNames);
}
else {
pscf.setReturnGeneratedKeys(true);
}
return getJdbcOperations().update(pscf.newPreparedStatementCreator(params), generatedKeyHolder);
}
Исключение:
28 мая 2015 11:17:02 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() для сервлета [диспетчера] в контексте с путём [] выбрано исключение [Ошибка обработки запроса; Вложенное исключение - org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; не классифицированный SQLException для SQL [{вызов usp_createNewTrans (?,?,?,?)}]; Состояние SQL [null]; код ошибки [0]; Для обновления был создан результирующий набор; Вложенное исключение - com.microsoft.sqlserver.jdbc.SQLServerException: для обновления был создан результирующий набор.] с основной причиной com.microsoft.sqlserver.jdbc.SQLServerException: для обновления был создан результирующий набор. на com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError (SQLServerException.java:190) в com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement (SQLServerPreparedStatement.java:417) в com.microsoft.sqlserver.jdbc. SQLServerPreparedStatement $ PrepStmtExecCmd.doExecute (SQLServerPreparedStatement.java:350) в com.microsoft.sqlserver.jdbc.TDSCommand.execute (IOBuffer.java:5696) в com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand (SQLServerConnection.java: 1715) на com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand (SQLServerStatement.java:180) на com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement (SQLServerStatement.java:155) на com.microsoft.sqlserver. JDB c.SQLServerPreparedStatement.executeUpdate (SQLServerPreparedStatement.java:314) на org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate (DelegatingPreparedStatement.java:98) на org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate (DelegatingPreparedStatement.java: 98) в org.springframework.jdbc.core.JdbcTemplate $ 3.doInPreparedStatement (JdbcTemplate.java:946) в org.springframework.jdbc.core.JdbcTemplate $ 3.doInPreparedStatement (JdbcTemplate.java:943) в org.springframework. jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:644) на org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:943) в org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update (NamedParameterJdbcTemplate.java:344) at com.crown.datapoint.services.dao.JobDAO.create (JobDAO.java:94) at com.crown.datapoint.services.JobService.create (JobService.java:91) at com.crown.datapoint. web.controller.JobRestController.createJob (JobRestController.java:63) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) на sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl .invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:606) на org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:221) на org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMetho д.Java: 137) на org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:110) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod (RequestMappingHandlerAdapter.java:777) на org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:706) в org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:85) на org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:943) на org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:877) в орг. springframework.web.se rvlet.FrameworkServlet.processRequest (FrameworkServlet.java:966) на org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:868) в javax.servlet.http.HttpServlet.service (HttpServlet.java:650) на org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:842) в javax.servlet.http.HttpServlet.service (HttpServlet.java:731) в org.apache.catalina.core.ApplicationFilterChain. internalDoFilter (ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:330) в org.springframework.security. web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:118) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:84) at org.springframework.security.web. FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) на org.springframework.security.web.access.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:113) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.ja ва: 342) в org.springframework.security.web.session.SessionManagementFilter.doFilter (SessionManagementFilter.java:103) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter (AnonymousAuthenticationFilter.java:113) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security. web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:154) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.savedrequest.R equestCacheAwareFilter.doFilter (RequestCacheAwareFilter.java:45) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.session.ConcurrentSessionFilter.doFilter (ConcurrentSessionFilter. Java: 125) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:199) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter (LogoutFilter.java:110) at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal (HeaderWriterFilter.java:57) в org.springframework.web.filter. OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter. Java: 87) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal (WebAsyncManagerIntegrationFilter.java: 50)в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security. web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192) на org.springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160) на org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java: 344) в org.springframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:261) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) на org.apache.catalina. core.ApplicationFilterChain. doFilter (ApplicationFilterChain.java:208) на org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88) на org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve. invoke (StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:505) at org.apache.catalina.core.Stand ardHostValve.invoke (StandardHostValve.java:170) на org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103) на org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:957) на org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:116) на org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:423) на org.apache.coyote.http11. AbstractHttp11Processor.process (AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint. java: 316) по адресу java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) на org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) на java.lang. Thread.run (Thread.java:745)
EDIT:
Я изменил мой код, чтобы это (смотри ниже), и это работает снова ... Я возвращаюсь 0 в restController, который первоначально показывает идентификатор как 0 ... но затем разрешает правильный идентификатор при обновлении страницы, но я чувствую, что это не совсем решение.
public int create(Job job) throws DataAccessException, NullPointerException {
Assert.notNull(job,"Job must not be null.");
Assert.notNull(job.getSite(),"Site must not be null.");
MapSqlParameterSource params = params("intSiteId",job.getSite().getId())
.addValue("dtmStart", job.getStartDate() == null ? null : dateTimeString(job.getStartDate()))
.addValue("dtmEnd", job.getEndDate() == null ? null : dateTimeString(job.getEndDate()))
.addValue("intManualFl",job.isManual());
getTemplate().update(getSql("create"), params);
return 0;
}