从JPA调用oracle函数

时间:2011-04-16 17:05:24

标签: 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 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个小时我一直在打破这个问题。任何人都可以建议如何得到我想要的结果?

2 个答案:

答案 0 :(得分:1)

If you are looking to call a function in JPA select query then follow below link, it works:

http://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/j_func.htm

答案 1 :(得分:-1)

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

query.setParameter(1, '1234');

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

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