#java #jpa #spring-data-jpa
#java #jpa #spring-data-jpa
Вопрос:
У меня есть следующая процедура на моем сервере mssql, которую я хочу выполнить из своего Java-кода
DECLARE @RC int
DECLARE @newUid bigint
EXECUTE @RC = [TEST_DB].[foobar].[getNextUid] @newUid OUTPUT
В моем коде я определил объект и использую аннотацию NamedStoredProcedureQuery для его определения
@Entity
@NamedStoredProcedureQuery(
name = "foobar.getNextUid",
procedureName = "foobar.getNextUid",
parameters = {
@StoredProcedureParameter(mode = ParameterMode.OUT, type = Long.class, name = "newUid")
}
)
Когда я вызываю эту хранимую процедуру в своем тесте, она выдает исключение
java.lang.IllegalArgumentException: No @NamedStoredProcedureQuery was found with that name : foobar.getNextUid
Я также попробовал это, назвав параметр в моей аннотации как @newUid
Вот мой тестовый пример
EntityManager entityManager = managerEntityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
StoredProcedureQuery query = entityManager.createNamedStoredProcedureQuery("foobar.getNextUid");
query.setParameter("@newUid", 1);
long nextUid = (long) query.getOutputParameterValue("newUid");
entityManager.getTransaction().commit();
entityManager.close();
Ответ №1:
попробуйте заменить query.getOutputParameterValue(«@newUid»); на query.getOutputParameterValue(«newUid»);