NHibernate возвращает неверные результаты SQL-запроса - PullRequest
2 голосов
/ 29 марта 2012

У меня есть запрос, который содержится в предложении select:

    d1.id,
    d1.title,
    d1.original_doc,
    d2.id,
    d2.title

И в предложении from:

    left outer join documents d2 on d1.original_doc = d2.id

Допустим, в БД у меня есть эти строки: ID TITLE ORIGINAL_DOC

    1 Title1 
    2 Title2 1

Для первой строки NHibernate вернет 1, Title1, null, 1, Title1 вместо 1, Title1, null, null, null.

Для второй строки будет возвращено 2, Title2, 1, 2, Title2 вместо 2, Title2, 1, 1, Title1.

Обратите внимание, что третий и четвертый столбцы не должны содержать разные значения, так как условие объединения - они одинаковые. Кажется, что происходит то, что я получаю ту же строку d1, что и d2, вместо строки, определенной условием.

Теперь странная часть: Если я включу .ShowSql () и скопирую запрос в Oracle Toad, он действительно вернет правильные результаты!

Я получаю набор результатов в NHibernate, используя var data = session.CreateSQLQuery (selectQuery) .List ()

У кого-нибудь есть идеи?

1 Ответ

4 голосов
/ 29 марта 2012

Я сообщил именно об этом как об ошибке , но это не ошибка.NH управляет результатом внутренне, используя имена столбцов.Если они имеют одинаковое имя, он выбирает первое.Вам нужно дать ему уникальные имена в предложении select:

SELECT
  d1.id as id1,
  d1.title as title1,
  d1.original_doc as original_doc1,
  d2.id as id2,
  d2.title as title2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...