【发布时间】:2011-08-06 23:39:43
【问题描述】:
我正在尝试从 JPA 类中调用一个简单的函数,该函数根据一些计算返回一个数字并具有以下定义。
'CREATE OR REPLACE FUNCTION CFB.FC_AMOUNT_CHECK(accountNumber IN VARCHAR2)
return NUMBER IS .....'
我正在尝试通过以下方式从 JPA 调用此函数。
StringBuilder sql = new StringBuilder("call CFB.FC_AMOUNT_CHECK(:accountNumber)");
Query query = em.createNativeQuery(sql.toString());
query.setParameter(1, '1234');
List<?> result = query.getResultList();
....
但是,当我执行这个类时,我总是得到以下异常:
java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [1]
我似乎无法理解 JPA 如何找不到参数 1....过去 4 个小时我一直在为此烦恼。谁能建议如何获得我想要的结果?
【问题讨论】:
-
从未在 Hibernate 中工作过。不确定:这条线对吗?
query.setParameter(1, '1234'); -
是的,这是 JPA 中的有效语句。
-
你可以试试
query.setParameter("accountNumber", '1234');让我知道结果吗? -
也不确定为什么在用文字替换它时要使用绑定变量。如果可能,请更改此
"call CFB.FC_AMOUNT_CHECK(accountNumber)",然后尝试query.setParameter("accountNumber", '1234');