Получить возвращаемое значение (скалярное), а не таблицу результатов, из хранимой процедуры с использованием Java и Hibernate

Мне сложно получить возвращаемое значение (целое число) из хранимой процедуры с использованием Hibernate и Java.

Моя хранимая процедура выглядит следующим образом:

create proc dbo.CheckEquipmentAuthorization @ReplicaId int as declare @IDAuthType int select @IDAuthType = AuthorizationType.IDAuthorizationType from AuthorizationType inner join ReplicaAuthorization on ReplicaAuthorization.RefIDAuthorizationType = AuthorizationType.IDAuthorizationType inner join Replica_ReplicaAuthorization on Replica_ReplicaAuthorization.RefIDAuthorization = ReplicaAuthorization.IDAuthorization inner join Replica on Replica.IDReplica = Replica_ReplicaAuthorization.RefIDReplica where Replica.IDReplica = @ReplicaId and GETDATE() between ReplicaAuthorization.AuthBegin and ReplicaAuthorization.AuthEnd declare @AuthIntValue int set @AuthIntValue = 10 if (@IDAuthType is not null) begin select @AuthIntValue = AuthorizationType.IntValue from AuthorizationType where AuthorizationType.IDAuthorizationType = @IDAuthType end print @AuthIntValue return @AuthIntValue 

Я пытаюсь получить возвращаемое значение, используя:

  query = session.createSQLQuery( "exec CheckEquipmentAuthorization(:replicaId)") .setParameter("replicaId", replicaId); 

Но, похоже, я могу получить таблицу результатов, используя это, и так как из моей процедуры не генерируется результирующая таблица, и я не хочу, чтобы она была, она терпит неудачу.

Есть ли способ получить это возвращаемое значение с помощью метода createSQLQuery ()?

Я использую Hibernate, Java и SQL Server. Хранимая процедура работает правильно (я протестировал ее с помощью SQL-клиента).

Спасибо.

Кажется, это дубликат. Вы сопоставили скалярный возвращаемый тип хранимой процедуры? И вы переводите этот тип возврата?

В хранимой процедуре я заменил

 return @AuthIntValue 

с

 select @AuthIntValue as RetVat 

Способ, которым я вызываю хранимую процедуру и преобразовывать результат в объект, который я создал.

 StoredProcResult o = (StoredProcResult)session.createSQLQuery("exec CheckEquipmentAuthorization :replicaId") .addScalar("retVal", Hibernate.INTEGER) .setParameter("replicaId", replicaId) .setResultTransformer(Transformers.aliasToBean(StoredProcResult.class)) .setCacheMode(CacheMode.GET) .uniqueResult(); int xpto = o.getRetVal(); 

Объект StoredProcResult:

 public class StoredProcResult { public int retVal; public int getRetVal() { return retVal; } public void setRetVal(int retVal) { this.retVal = retVal; } } 
Interesting Posts

SQL Server Отключение всех триггеров – не удается найти объект «XXXX», потому что он не существует или у вас нет разрешений

Как передать значение типа Nullable Bit в хранимую процедуру SQL Server?

Почему, когда я вставляю DateTime null, у меня есть «0001-01-01» в SQL Server?

Entity Framework / SQL Server Включить поведение с фильтрацией

SQL Сохраненная процедура для получения даты и времени

SQL Server, используя номер строки

Разница между критериями IS NULL в JOIN и WHERE в запросе

Проблема с запуском SQL-Server при подключении к серверу

Добавление или вычитание времени с даты и времени на SQL-сервере

Я хочу отправить PDFHelper.ReturnPDF (pdfContents, * .pdf) в качестве прикрепленного файла в письме … Как это сделать?

SQL Server 2012 FileTable сопоставлен с установленным виртуальным каталогом S3

Решение к событию с выдержкой времени / Конечная дата

как установить оценку sqlserver2005 на машине xp sp2

Проблема с if-statement, используемая в Table-return-function в SQL

Как автоматически вставить столбец SQL Server

Давайте будем гением компьютера.