2011-04-16 68 views
3

我想從JPA類中調用一個簡單函數,該函數根據一些計算返回一個數字,並具有以下定義。從JPA調用oracle函數

'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個小時裏,我一直在嘲笑我。任何人都可以請建議如何得到我想要的結果?

+0

從未在Hibernate中工作。不確定:這條線是否正確? 'query.setParameter(1,'1234');' – Guru 2011-04-16 17:12:07

+0

是的,這是JPA中的有效語句。 – Prashanth 2011-04-16 17:15:23

+1

你可以嘗試'query.setParameter(「accountNumber」,'1234');'讓我知道結果對我? – Guru 2011-04-16 17:36:09

回答

0

如果你想通過索引設置查詢參數

query.setParameter(1, '1234'); 

您需要更改查詢中指定的參數,並將其替換?,這樣

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