HQL-запрос, который возвращает столбец типа string

Как извлечь значение типа строки из одного столбца, используя HQL. Я попробовал следующий способ, но не работает.

    public virtual string GetCityById(int Id)
    {
        using (var session = sessionFactory.OpenSession())
        {
            using (var transaction = session.BeginTransaction())
            {
                var queryString = string.Format("SELECT C.CityName FROM {0} AS C WHERE Id=:Id", typeof(T));
                return session.CreateQuery(queryString).SetInt32("Id", Id).ToString(); <--Also tried with .SetParameter("Id",Id)
            }
        }
    }

Ожидаемый результат:

НЬЮ-ЙОРК

Фактический результат:

Выберите имя ОТ FNHHelper.Entites.Cities, ГДЕ Id=:Id

1 ответ

Решение

Вы возвращаете строковое представление запроса. Вам просто нужно выполнить запрос и вернуть его уникальный результат:

session.CreateQuery(queryString).SetInt32("Id", Id).UniqueResult();

(при условии, что имя метода такое же, как в версии Java).

Другие вопросы по тегам