Не отображенная таблица NHibernate - объект является многоколоночным типом - ToListResultTransformer

У меня есть NHibernate, выполняющий сырой SQL-запрос, который построен из базы данных. В программном обеспечении пользователь может выбрать таблицу и пару столбцов в определенном порядке. В моем программном обеспечении я использую эту информацию для создания SQL-запроса, который выбирает определенные столбцы из таблицы и объединяет столбцы в один столбец. Вот быстрый пример.

Пользователь определяет, что он хочет выбрать столбцы FirstName унд SurName из таблицы User, Затем я строю это предложение выбора:

select (firstname || surname) as resultData from user

И теперь я пытаюсь использовать оператор select:

var list = session.CreateSQLQuery(sqlQuery)
            .SetResultTransformer(new NHibernate.Transform.ToListResultTransformer())
            .List();

Но моя проблема в том, что теперь я GenericADOException с сообщением

объект является многоколоночным типом

Я не нашел много в Интернете для моей проблемы. Только поток, который выполняет ту же задачу без этой ошибки: сопоставление SQL-запроса NHibernate для результата с одним столбцом

1 ответ

Решение

Да, я нашел свою проблему. Это было не проблема с кодом, а не с базой данных.

Там столбцы могли иметь null ценности, и NHibernate это не понравилось.

FirstName | Surname
-------------------
Sam       | Smith
          | Archer
Michael   | Brown

Я решил проблему с настройкой sql satement. Я использую сейчас coalesce функция.

Новый SQL-оператор:

select (coalesce(firstname, '') || coalesce(surname, '')) as resultData from user
Другие вопросы по тегам