java - 在 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
吗?
解决方案
事实证明 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)
推荐阅读
- excel - 查找关键字并复制数据范围
- ruby-on-rails - 查询关联值
- angular - 可观察订阅两次
- mysql - 在 yii2 中运行原始 SQL 时出现 SQL 查询语法错误或访问冲突
- android - 如何使用“异步任务”获取存储在“房间”库中的所有行?
- c# - 从 Revit 加载项调用 Enity Framework 方法会导致 NotSupportedException
- php - Laravel 5.5 无法使用身份验证脚手架登录
- android - 当我想运行应用程序时,Android Studio 没有显示任何设备
- api - 如何通过 Ballerina 中的菜单驱动应用程序调用服务
- bash - Bash:如何在不使用 sed 或 awk 的情况下在 for 循环中获取文件的第 n 行