描述:尝试创建返回oracle阵列类型的网关服务调用。特别是获取sys.dbmsoutput\u linesarray。当我注册OUT参数或可能在服务中注册OUT参数时,下面出现的错误似乎是我的配置有问题。想知道是否有人能告诉我做错了什么?
错误消息:CallableStatementCallback;SQL的未分类SQLException[{call GET\u DBMS\u OUTPUT(?)}];SQL状态[99999];错误代码[17004];无效列类型:1111;嵌套的异常是java.sql。SQLException:无效列类型:1111
引用代码示例我试图在Spring集成中做:JAVA DBMS ORACLE ARRAY CALLABLE STATEMENT示例
Oracle 12c-PLSQL功能:
create or replace function get_dbms_output
return dbmsoutput_linesarray
as
l_output dbmsoutput_linesarray;
l_linecount number;
begin
dbms_output.enable;
dbms_output.put_line('This is a line');
dbms_output.put_line('This is another line');
dbms_output.put_line('This is the last line.');
dbms_output.get_lines(l_output, l_linecount);
if l_output.count > l_linecount then
-- Remove the final empty line above l_linecount
l_output.trim;
end if;
return l_output;
end get_dbms_output;
Spring上下文文件-取自Spring集成git hub示例存储过程-oracle。示例代码使用以下出站网关进行了扩展。
<bean id="sqlReturnArray" class="org.springframework.data.jdbc.support.oracle.SqlReturnArray"></bean>
<int-jdbc:stored-proc-outbound-gateway
id="outbound-gateway-function-dbms" request-channel="procedureDBMSRequestChannel"
data-source="dataSource"
stored-procedure-name="get_dbms_output"
expect-single-result="true">
<int-jdbc:sql-parameter-definition name="l_output" type="#{T(oracle.jdbc.OracleTypes).ARRAY}" type-name="DBMSOUTPUT_LINESARRAY" direction="OUT" return-type="sqlReturnArray" />
</int-jdbc:stored-proc-outbound-gateway>
JAVA更新的字符串转换服务
public interface StringConversionService {
/**
* Converts a String to Upper Case.
*
* @param stringToConvert The string to convert to upper case
* @return The converted upper case string.
*/
String convertToUpperCase(String stringToConvert);
Integer getNumber();
@Payload("new java.util.Date()")
String[] getLines();
}
JAVA-主
final StringConversionService service = context.getBean(StringConversionService.class);
System.out.println("Calling Stored Proc");
String[] dbmsLines = service.getLines();
更新:Spring配置:-为SqlReturnArray添加了一个bean。-添加了对SqlReturnArray bean的引用的返回类型-将StringConversionService更改为使用字符串[],而不是oracle数组返回类型。-更新了主类以获取字符串[]
您必须添加report-type
并以某种方式实现它,就像SqlReportnArray
一样:
<int-jdbc:sql-parameter-definition name="l_output" type="#{T(oracle.jdbc.OracleTypes).ARRAY}" type-name="DBMSOUTPUT_LINESARRAY" direction="OUT" return-type="sqlReturnArray" />
其中,sqlReturnArray是sqlReturnArray的一个bean。
当然,已经将结果处理为String[]
,而不是那里不可用的ARRAY
。
本文向大家介绍Dubbo 能集成 Spring Boot 吗?相关面试题,主要包含被问及Dubbo 能集成 Spring Boot 吗?时的应答技巧和注意事项,需要的朋友参考一下 可以的,项目地址如下。 https://github.com/apache/incubator-dubbo-spring-boot-project
我是spring集成和缓存新手,想知道如何将从出站网关接收到的对象添加到缓存中。无法确定所需的配置。 从以下配置,我从rest api收到的对象正在被记录: INFO:com.domain.IpAddress@74589991 我计划使用ehcache/caffiene,任何提示都会有帮助。 编辑2: 现在,我按照建议更改了出站网关: 并将ehache配置定义如下: 在我的服务类中,定义了可缓存的
最后,在使用Spring Data REST和QueryDSL时,是否可以显示正确的分页链接?如果是,怎么做?
我有以下2个组件,它们应该首先从Mongo中删除文档,然后从Elastic中删除。 主要流程: 服务: 不幸的是,deleteDocumentInMongo从未被调用。我可以在日志中看到bean已正确注册。 我是做错了什么,还是你需要更多的调试信息?如果我窃听手柄,则deleteDocumentInES。执行输入,但忽略mongo流。
Spring提供了特殊的类DelegatingVariableResolver,以无缝方式将JSF和Spring集成在一起。 在JSF中集成Spring依赖注入(IOC)功能需要以下步骤。 第1步:添加DelegatingVariableResolver 在faces-config.xml中添加一个variable-resolver条目,指向spring类DelegatingVariableRes