Вызов функции оракула из JPA - PullRequest
4 голосов
/ 16 апреля 2011

Я пытаюсь вызвать простую функцию из класса 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 ]

1 голос
/ 03 февраля 2016

Если вы хотите вызвать функцию в запросе выбора JPA, перейдите по ссылке ниже, она работает:

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

0 голосов
/ 23 мая 2013

Если вы хотите установить параметры запроса по индексу:

query.setParameter(1, '1234');

Вам нужно изменить именованные параметры внутри запроса и заменить его на ?, например:

StringBuilder sql = new StringBuilder("call CFB.FC_AMOUNT_CHECK(?)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...