如何在storedprocedurequery..setparameter()中设置数组?

ljsrvy3e  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(424)

有这样一个代码:

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)));

对于eclipselink,成功地执行了以下代码:注册一个参数以传递id列表,然后设置该列表。在hibernate情况下,类型为的异常:
java.lang.illegalargumentexception:引发类型不能为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]
如何将列表传递给参数?

5hcedyr0

5hcedyr01#

hibernate不能很好地处理sql数组。你必须创建一个 UserType 而使用它。在这篇文章的最后是一个创建 UserType 对于postgres数组。同样的事情也应该适用于甲骨文。
https://thorben-janssen.com/mapping-arrays-with-hibernate/

相关问题