首页 > 解决方案 > 在 NamedStoredProcedureQuery 中想要将类型设置为 SQLServerDataTable

问题描述

NamedStoredProcedureQuery 想设置 SQLServerDataTable

在 Spring Boot 中使用 NamedStoredProcedureQuery 并且无法将 TT 对象设置为参数并且获取类型不能为空异常

@StoredProcedureParameter(mode = ParameterMode.IN, name = "TT_UserHierarchyList", type = SQLServerDataTable.class)

它适用于包装类,如 Integer、Double、String...等。

已经厌倦了设置实体和 SQLServerDataTable。

在创建
查询时 query = entityManager.createNamedStoredProcedureQuery("getChangedFarmers");

它正在抛出 Type 不能为 null 它正在抛出。

可以设置type=SQLServerDataTable吗?

标签: javaspringspring-bootsql-server-2008

解决方案


事实证明 Spring 还不支持SQLServerDataTable作为类型,所以代码如下:

parameters = {
    @StoredProcedureParameter(mode = ParameterMode.IN, name = "ParameterName", type = SQLServerDataTable.class)
}

会抛出一个异常,如:

引起:java.lang.IllegalArgumentException:类型不能为空

所以解决方案是在 JDBC 级别实现对存储过程的调用。

这里有一些很好的 JDBC 实现代码

如果你想注入一个 Spring 数据源 bean,你可以在这里阅读如何配置它

这将提供对您的数据源的轻松访问,如下所示:

@Autowired
DataSource dataSource;

SQLServerPreparedStatement statement = (SQLServerPreparedStatement) dataSource.getConnection().prepareStatement(ececStoredProc)

推荐阅读