【发布时间】:2019-07-19 14:55:00
【问题描述】:
我有一个返回 XML 的过程,我正在使用 simpleJdbcCall 来执行它。当我以地图形式获得结果时,它返回一个 SQLServerSQLXML。我将它转换为 java.sql.SQLXML 以使用 getString() 方法但没有成功。它抛出一个 NegativeArraySize 异常。当我在 SQLServer Management Studio 中执行该过程时,它会工作并生成 XML。
我已经尝试获取二进制流但没有成功,它只返回了两个 unicode 字符:ÿ (255) 和 þ (254)。
这是我的 SimpleJdbcCall:
SimpleJdbcCall simpleCall = new SimpleJdbcCall(dataSource)
.withCatalogName("dbo")
.withProcedureName("pProcName")
.withoutProcedureColumnMetaDataAccess()
.declareParameters(new SqlParameter("@ID", Types.BIGINT))
.declareParameters(new SqlOutParameter("@XmlOut", Types.SQLXML));
我已经设置了 ID 并将其放在 MapSqlParameterSource 上,然后我执行该过程:
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("@ID", inDTO.getIdCertificado());
Map<String, Object> mapa = simpleCall.execute(params);
SQLXML xml = (SQLXML) mapa.get("@XmlOut");
String val = xml.getString();
【问题讨论】:
标签: java sql-server spring jdbc