【发布时间】:2021-04-06 04:31:37
【问题描述】:
有这样一段代码:
StoredProcedureQuery query = this.em.createStoredProcedureQuery ("NameOfProcedure");
query.registerStoredProcedureParameter ("list_of_ids", Array.class, ParameterMode.IN);
query.setParameter (Parameters.PIECE_IDS, oracleArray (dataSource, "T_NUMBER_LIST", request.getItems (). toArray (items)));
对于eclipslink,这段代码执行成功:注册一个参数传递id列表,然后设置这个列表。在 Hibernate 的情况下,类型异常:
java.lang.IllegalArgumentException: Type cannot be null 被抛出
据我了解,Heber 不喜欢 Array.class
query.registerStoredProcedureParameter ("list_of_ids", Array.class, ParameterMode.IN);
我尝试将此部分修复为Integer []. Class 和ArrayList.class,但这会导致其他错误,例如:
绑定值 [oracle.sql.ARRAY@5f82399f] 不是指定类型 [class [Ljava.lang.Integer;
或
内部转换失败:[512]
如何将列表传递给参数?
【问题讨论】:
标签: java oracle hibernate stored-procedures java-stored-procedures