Java SimpleJDBCall正在返回null

Java SimpleJDBCall正在返回null,java,sql-server,spring,spring-boot,spring-jdbc,Java,Sql Server,Spring,Spring Boot,Spring Jdbc,下面的代码试图调用存储过程rp_报告。但它返回空指针异常。有关更多信息,请参阅下面的日志和代码。 我怀疑错误出现在类型为LocalDate的输入参数中。但是我找不到任何日志来说明发生此错误的原因。此应用程序使用SpringBoot和SimpleJDBCall调用存储过程 非常感谢您的帮助 import java.time.LocalDate; import java.util.Map; import org.apache.log4j.Logger; import org.octopoda.m

下面的代码试图调用存储过程rp_报告。但它返回空指针异常。有关更多信息,请参阅下面的日志和代码。
我怀疑错误出现在类型为LocalDate的输入参数中。但是我找不到任何日志来说明发生此错误的原因。此应用程序使用SpringBoot和SimpleJDBCall调用存储过程

非常感谢您的帮助

import java.time.LocalDate;
import java.util.Map;

import org.apache.log4j.Logger;
import org.octopoda.model.RptByCourier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Repository;


@Repository
public class RptByCourierSPRepo {

    private static final Logger logger = Logger.getLogger(RptByCourierSPRepo.class);

    @Autowired
    private SimpleJdbcCall spCall;


    public RptByCourier callRptByCourierSP(LocalDate startDate, LocalDate endDate, Integer branchId) {

        logger.info("Initiate Store Procedure rp_report");

        RptByCourier spReturn = new RptByCourier();
        spCall.withCatalogName("dbo"); <----Newly Added
        spCall.withProcedureName("Rp_Report");

        SqlParameterSource sqlParam = new MapSqlParameterSource()
                .addValue("StartDate", startDate)
                .addValue("EndDate", endDate)
                .addValue("Branch", branchId);


        Map<String, Object> spResult = Objects.requireNonNull(spCall.execute(sqlParam), "spCall.execute() returned null");

/**Setters here Truncated*/
        return spReturn;
    }
}
新增配置

@Configuration
@ComponentScan("org.octopoda")
public class OctopodaConfig {

    @Bean
    public DataSource dataSource() {

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        dataSource.setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=Test");
        dataSource.setUsername("user");
        dataSource.setPassword("password");

        return dataSource;
    }

    @Bean
    public SimpleJdbcCall simpleJdbc(DataSource datasource) {

        return new SimpleJdbcCall(datasource);
    }
添加了下面的行,现在它要求没有StartDate参数的输入

spCall.withCatalogName("dbo");
错误日志2
我不知道
@Autowired
是什么意思,但可能是
spCall
没有初始化吗?@axel Autowired是一个用于连接bean的spring注释,是的,它是初始化的,部件没有问题。如果您确定引发异常的确切位置,肯定会有所帮助,例如,如果您的日志没有显示行号,则使用如下
Objects.requirennull
Map spResult=Objects.requirennull(spCall.execute(sqlParam),“spCall.execute()返回null”)
。@axel按照您的建议更新了代码,但仍然找不到提到spCall.execute的部分。。。。但是我已经更新了日志,并在提到错误的地方放了一行。好吧,那:
String.valueOf(spResult.get(“PODsCompleted”).toString()
没有任何意义。您应该使用
String.valueOf(spResult.get(“PODsCompleted”)
rp_report '2015-01-01','2015-01-02',213

Rp_Report (StartDate, EndDate, Branch)
where
StartDate is datetime
EndDate is datetime
Branch is int
@Configuration
@ComponentScan("org.octopoda")
public class OctopodaConfig {

    @Bean
    public DataSource dataSource() {

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        dataSource.setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=Test");
        dataSource.setUsername("user");
        dataSource.setPassword("password");

        return dataSource;
    }

    @Bean
    public SimpleJdbcCall simpleJdbc(DataSource datasource) {

        return new SimpleJdbcCall(datasource);
    }
spCall.withCatalogName("dbo");
org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; uncategorized SQLException for SQL [{call dbo.rp_report()}]; SQL state [S0004]; error code [201]; Procedure or function 'rp_report' expects parameter '@StartDate', which was not supplied.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Procedure or function 'rp_report' expects parameter '@StartDate', which was not supplied.
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84) ~[spring-jdbc-4.3.2.RELEASE.jar:4.3.2.RELEASE]