Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带参数调用存储过程的JPA_Java_Postgresql_Jpa_Plpgsql - Fatal编程技术网

Java 带参数调用存储过程的JPA

Java 带参数调用存储过程的JPA,java,postgresql,jpa,plpgsql,Java,Postgresql,Jpa,Plpgsql,我的postgreSQL数据库中有以下过程: CREATE OR REPLACE FUNCTION getItemsForCategory(categoryId integer) RETURNS SETOF ITEM AS $_$ DECLARE result ITEM; BEGIN FOR result IN SELECT * FROM item it JOIN item_category itcat ON it.

我的postgreSQL数据库中有以下过程:

CREATE OR REPLACE FUNCTION getItemsForCategory(categoryId integer)
  RETURNS SETOF ITEM AS $_$
DECLARE
  result ITEM;
BEGIN
  FOR result IN SELECT *
                FROM item it
                  JOIN item_category itcat ON it.id = itcat.item_id WHERE itcat.category_id = categoryId LOOP
    RETURN NEXT result;
  END LOOP;

END; $_$ LANGUAGE 'plpgsql';
它在使用终端时工作得非常好,但我在使用JPA调用它时遇到了麻烦。这是我的代码片段(4是参数cateforyId的值):


有人知道如何正确设置参数的值吗?我还尝试使用0而不是1来设置参数,使用其他数据类型的参数(字符串、对象)调用setParameter,但每次我都会收到类似的错误,如图所示。非常感谢

在设置值之前,您需要注册参数

spq.registerStoredProcedureParameter("categoryId", int.class, ParameterMode.IN);

看。

非常感谢,伙计!
Exception in thread "main" java.lang.IllegalArgumentException: 
You have attempted to set a parameter at position 1 which does not exist in this query string getItemsForCategory
spq.registerStoredProcedureParameter("categoryId", int.class, ParameterMode.IN);