小编paw*_*pta的帖子

JDBC SQL Server:未为参数编号设置该值

我从从java代码调用存储过程的代码中收到以下错误:

Exception Trace {} org.springframework.jdbc.UncategorizedSQLException:CallableStatementCallback; 未分类SQL的SQLException [{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,,?,,?,?,?,?,?)}]; SQL状态[null]; 错误代码[0]; 没有为参数编号11设置该值.嵌套异常是com.microsoft.sqlserver.jdbc.SQLServerException:未在org.springframework.jdbc的org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)中为参数编号11设置该值. support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)在org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1095)在org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1131)

该应用程序部署在WAS 8.5.5上并使用jdbc驱动程序版本4.2.重新启动服务器时,此问题不再发生.生成的以下调用语句看起来不正确.连续逗号没有?它们之间.

{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,,?,,?,?,?,?,?)}

存储过程有10个参数.以下是存储过程的定义:

CREATE PROCEDURE [test].[usp_xxx_GetCompanyDetails]
(
    @ANumber        int,
    @CompanyId      int,
    @UserRole       varchar(15),
    @RequestId      varchar(100),
    @CompanyCode    varchar(5),
    @BaseSystem     varchar(5),
    @PType          varchar(20),    
    @PId            varchar(40),
    @IsActive       bit,     
    @responseData   xml OUT
)
Run Code Online (Sandbox Code Playgroud)

以下是调用存储过程的java代码.它使用spring数据进行调用.

 private String executeProc(Integer aNumber,Integer companyId, String baseSystem, 
                String role,String companyCode,String requestId, String pType,String pId,
                boolean isActive ) throws SQLException {

            SQLXML responseData=null;
            Map<String,Object> inputParams= new HashMap<>();
            inputParams.put("ANumber", aNumber);
            inputParams.put("CompanyId", companyId);
            inputParams.put("UserRole", role);
            inputParams.put("RequestId", requestId);
            inputParams.put("CompanyCode", companyCode); …
Run Code Online (Sandbox Code Playgroud)

java sql-server websphere jdbc sql-server-2012

13
推荐指数
1
解决办法
1355
查看次数

Java Generics - 方法声明的区别

以下两个方法声明之间有什么区别:

 1. <R> Stream<R> myFunc(Function<? super T, ? extends R> mapper);    
 2. Stream<R> myFunc(Function<? super T, ? extends R> mapper);
Run Code Online (Sandbox Code Playgroud)

对于要编译的第二个声明,我需要像这样向类添加类型参数.

public class MyGenericsTest<T, R>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器确保在编译时确定myFunc的返回类型.编译器也可以从方法签名中知道.我很困惑为什么这两个声明被编译器区别对待.

java generics

6
推荐指数
1
解决办法
1411
查看次数

Redis rejson 或字符串

我将使用 Redis 来存储具有嵌套结构的 json 文档。我的要求只是设置和获取文件。我不需要对文档执行任何特定于 json 的命令。使用 rejson 模块是否有任何优势。GET 和 SET 命令将比 JSON.GET 和 JSON.SET 命令执行得更好。以下来自redis文档

JSON.SET 从 1.0.0 开始可用。时间复杂度:O(M+N),其中 M 是原始值的大小(如果存在),N 是新值的大小。

JSON.GET 从 1.0.0 开始可用。时间复杂度:O(N),其中 N 是值的大小。

GET 密钥 从 1.0.0 开始可用。时间复杂度:O(1)

SET 键值 [expiration EX seconds|PX 毫秒] [NX|XX] 从 1.0.0 开始可用。时间复杂度:O(1)

只是想确认将文档存储为字符串值是正确的做法。

redis redisjson

6
推荐指数
1
解决办法
675
查看次数

没有字段名称的mongodb查询结果

有没有办法只使用值而不是字段名称来获取mongodb查询结果.我的查询给了我以下结果:

{
           "t_number" : 2508
},
{
           "t_number" : 2560
},
{
           "t_number" : 2599
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望查询结果[2508,2560,2599].或者如果不可能,是否可以将查询结果作为[{2508},{2560},{2599}].我知道我可以迭代结果并改变我的编程语言格式.我正在寻找一种方法从mongodb获得并节省一些工作.

mongodb

4
推荐指数
2
解决办法
1939
查看次数

泛型 - ?使用

java.util.Stream接口的JDK文档具有以下代码片段作为收集器构造的示例.

Collector<Widget, ?, TreeSet<Widget>> intoSet =
         Collector.of(TreeSet::new, TreeSet::add,
                      (left, right) -> { left.addAll(right); return left; });
Run Code Online (Sandbox Code Playgroud)

Collector.of方法的返回类型为 static <T,R> Collector<T,R,R>

是吗?在示例中的返回类型中,只是一种方便的方式来引用下一个泛型类型,因为这两个类型在方法签名中已声明为相同.并且以下三个陈述都是同一个:

Collector<Widget, ?, TreeSet<Widget>> intoSet =
             Collector.of(TreeSet::new, TreeSet::add,
                          (left, right) -> { left.addAll(right); return left; });
Collector<Widget, TreeSet<Widget>, TreeSet<Widget>> intoSet =
             Collector.of(TreeSet::new, TreeSet::add,
                          (left, right) -> { left.addAll(right); return left; });
Collector<Widget, TreeSet<Widget>, ?> intoSet =
             Collector.of(TreeSet::new, TreeSet::add,
                          (left, right) -> { left.addAll(right); return left; });
Run Code Online (Sandbox Code Playgroud)

java generics

3
推荐指数
1
解决办法
368
查看次数