Java 从JPA调用oracle函数

Java 从JPA调用oracle函数,java,oracle,jpa,Java,Oracle,Jpa,我试图从一个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

我试图从一个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();

我似乎无法理解JPA是如何找不到参数1的……在过去的4个小时里,我一直在为此伤脑筋。有人可以建议如何获得我想要的结果吗?

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

query.setParameter(1, '1234');
您需要更改查询中的命名参数,并将其替换为
,如下所示:

StringBuilder sql = new StringBuilder("call CFB.FC_AMOUNT_CHECK(?)");

如果您希望调用JPA select查询中的函数,请遵循以下链接,它可以工作:


从未在休眠状态下工作过。不确定:这条线对吗<代码>query.setParameter(1,'1234')是的,这在JPA中是一条有效的语句。你能试试
query.setParameter(“accountNumber”,“1234”)吗
并让我知道结果?也不确定在用文本替换绑定变量时为什么要使用绑定变量。如果可能,请更改此
“调用CFB.FC\u AMOUNT\u CHECK(accountNumber)”
,然后尝试
query.setParameter(“accountNumber”,“1234”)可能重复的
StringBuilder sql = new StringBuilder("call CFB.FC_AMOUNT_CHECK(?)");