У меня есть запрос, который содержит в выбранном пункте:NHibernate возвращаются неправильные результаты SQL запроса
d1.id,
d1.title,
d1.original_doc,
d2.id,
d2.title
И в ЕКОМ:
left outer join documents d2 on d1.original_doc = d2.id
Допустим в БД у меня есть эти строки : ID НАЗВАНИЕ ORIGINAL_DOC
1 Title1
2 Title2 1
в первом ряду, NHibernate будет возвращать 1, Title1, п ull, 1, Title1 вместо 1, Title1, null, null, null.
Для второй строки он вернет 2, Title2, 1, 2, Title2 вместо 2, Title2, 1, 1, Title1.
Обратите внимание, что третий и четвертый столбцы не должны содержать разные значения, так как условие соединения является одинаковым. Кажется, что происходит то, что я получаю ту же строку d1, что и d2, вместо строки, определяемой условием.
Теперь странная часть: Если я вернусь .ShowSql() и скопирую запрос в Oracle Toad, он действительно вернет правильные результаты!
Я получаю результирующий набор в NHibernate с помощью уаг данных = session.CreateSQLQuery (SelectQuery) .list()
Кто-нибудь получил какие-либо идеи?
Спасибо, что сделали! Это кажется довольно слабым из NHibernate, возвращая различные результаты от того, что БД вернется, когда сталкивается с одним и тем же запросом. Я бы даже не подумал об ошибке, но красноречиво возвращать неправильные результаты действительно плохо. И это не является необходимым ограничением. :/Когда вы думаете об этом, это явно ошибка. – svinja
Это тоже мое мнение. Вы можете добавить комментарий в jira, если хотите. Возможно, было бы лучше добавить новую проблему типа «улучшение функции». Просто будьте вежливы в jira, некоторые люди там чувствительны ... –
+1 за сообщение об ошибке, что привело меня к выводу, что эта ошибка «не ошибка» для nhibernate и что я должен переименовать имена столбцов с одинаковой орфографией в мой запрос. –