我尝试从JPA/Hibernate环境向plpgsql存储过程传递整数数组值。但我总是得到一个执行:函数fn_test_array(bytea)不存在。
我编写了一个简短的演示应用程序,演示了这个问题。(Wildfly AS,JPA/Hibernate,PostgreSQL 12)
是的,我知道,int[]。课堂是垃圾,那么解决办法是什么呢?:)
存储过程:
CREATE OR REPLACE FUNCTION public.fn_test_array(in_arr integer[], OUT res_int bigint)
RETURNS bigint
LANGUAGE plpgsql
AS $function$
BEGIN
res_int := 201;
END;
$function$
;
从java调用:
StoredProcedureQuery query2 = em.createStoredProcedureQuery("fn_test_array")
.registerStoredProcedureParameter("in_arr", int[].class, ParameterMode.IN)
.registerStoredProcedureParameter("res_int", Long.class, ParameterMode.OUT)
.setParameter("in_arr", new int[]{1, 2});
query2.execute();
Long res2 = (Long) query2.getOutputParameterValue("res_int");
System.out.println("res2: " + res2);
例外情况:
11:26:11,933 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-19) SQL Error: 0, SQLState: 42883
11:26:11,933 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-19) ERROR: function fn_test_array(bytea) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 15
提前感谢您的帮助。
不幸的是,我没有找到诡辩的解决方案。但是,我用JDBC连接解决了它。它是这样工作的。
final Session session = em.unwrap(Session.class); //Hibernate session
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
try {
String query = "{CALL fn_test_array(?, ?)}";
CallableStatement stmt = connection.prepareCall(query);
Integer[] numbers = {1, 2, 3, 5};
final Array in_arr = connection.createArrayOf("integer", numbers);
stmt.setArray(1, in_arr);
stmt.registerOutParameter(2, Types.BIGINT);
stmt.execute();
Long resLong = stmt.getLong(2);
System.out.println("resLong: " + resLong);
stmt.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
我需要你的帮助,在这个特殊的问题上,我想传递一个隐藏输入类型的值。jsp程序到servlet程序 我现在做的基本上是这样的 从servlet中我得到了值 它没有打印任何想法。jsp表单方法是post,servlet方法是doPost 有什么想法为什么它不传递参数吗?
有人能告诉我如何使用将数组参数传递给postgresql函数吗?我尝试了下面的方法,但是得到了错误: 例外 psqlException:无法推断用于[ljava.lang.Integer;]实例的SQL类型。使用带有显式Types值的setObject()来指定要使用的类型。 谢谢
问题内容: 我在烧瓶中有一个称为数组的函数,该函数接收一个列表并打印出列表中的项目: 在客户端,我想将名为str的javascript数组传递给该数组。我该怎么办?这就是我现在所拥有的,但是Flask没有读取添加的变量。有任何想法吗? 问题答案: Flask具有一个称为request的内置对象。在请求中有一个称为args的multidict。 您可以用来检索查询字符串的值。 当然,这需要一个get
要将数组参数传递给函数,需指定不带方括号的数组名。例如,如果数组hourlyTemperatures声明如下: int hourlyTemperatures[24]; 则下列函数调用语句: modifyArray(hourlyTemperatutes,24); 将数组 hourlyTemperatures 及其长度传递给函数 modifyArray。将数组传递给函数时,通常也将其长度传递给函数,使
和empdomain.updateemp() 我只是一个新手玩2,jpa持久化,所以我不知道如何修复异常错误,请帮助。
问题内容: 有谁知道如何将C#ASP.NET数组传递给JavaScript数组?示例代码也将很好。 对不起,如果我以前的人含糊不清。这个问题实际上很简单。为了简单起见,我在文件中声明: 现在,我想传递给客户端,并在JavaScript中使用数组中的数据。我该怎么做? 问题答案: 您可以使用ClientScript.RegisterStartUpScript将javascript注入Page_Loa