Java 带参数调用存储过程的JPA
我的postgreSQL数据库中有以下过程: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.
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);