从 JPA 调用 oracle 函数

Pra*_*nth 5 java oracle jpa

我试图从 JPA 类调用一个简单的函数,该函数根据一些计算返回一个数字,并具有以下定义。

'CREATE OR REPLACE FUNCTION CFB.FC_AMOUNT_CHECK(accountNumber IN VARCHAR2)
return NUMBER IS .....'
Run Code Online (Sandbox Code Playgroud)

我试图通过以下方式从 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();
Run Code Online (Sandbox Code Playgroud)

....

然而,当我执行这个类时,我总是得到以下异常:

java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [1]
Run Code Online (Sandbox Code Playgroud)

我似乎不明白 JPA 怎么找不到参数 1....在过去的 4 小时里我一直为此伤透了脑筋。谁能建议如何获得我想要的结果?

小智 -1

如果要按索引设置查询参数:

query.setParameter(1, '1234');
Run Code Online (Sandbox Code Playgroud)

您需要更改查询中的命名参数,并将其替换为?,如下所示:

StringBuilder sql = new StringBuilder("call CFB.FC_AMOUNT_CHECK(?)");
Run Code Online (Sandbox Code Playgroud)