powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проблема при выборке с использованием SetMaxResults() (NHibernate 2.1.1.4000 + Oracle 11g)
2 сообщений из 2, страница 1 из 1
Проблема при выборке с использованием SetMaxResults() (NHibernate 2.1.1.4000 + Oracle 11g)
    #37122777
barser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Между классами Document и Treenode, а также между Document и Action связи многие-ко-многим.
Есть довольно простой рабочий запрос коллекции Documents:

Код: plaintext
1.
2.
3.
4.
5.
var results = dc.GetExecutableCriteria(ses)
                .CreateAlias("TreeNodes", "tn")
                .Add(Restrictions.Eq("tn.Id", 1))
                .CreateAlias("Actions", "actions")
                .Add(Restrictions.Eq("actions.Operator.Id", 1))
                .Future<Document>() as List<Document>;

Ему соответствует сгенерированный SQL-код (лишнее убрал):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT     
               this_.title AS title10_2_,
               this_.doc_date AS doc6_10_2_,
               /* ... */
               actions6_.fk_document AS fk1_, // <---
               actions2_.id AS fk2_, // <---
               /* ... */
               treenodes4_.fk_document AS fk1_, // <---
               tn1_.id AS fk2_ // <---
               FROM documents this_
              INNER JOIN link_documents_treenodes treenodes4_
                ON this_.id = treenodes4_.fk_document
              INNER JOIN document_treenodes tn1_
                ON treenodes4_.fk_treenode = tn1_.id
              INNER JOIN link_documents_actions actions6_
                ON this_.id = actions6_.fk_document
              INNER JOIN actions actions2_
                ON actions6_.fk_action = actions2_.id
               /* ... */
Обратите внимание на 4 алиаса, рядом с которыми стоит знак "<---". Они совпадают попарно.
Пока всё работает. Но если добавить функцию SetMaxResults(10), SQL-код превратится в

Код: plaintext
SELECT * FROM (/*запрос выше*/) WHERE rownum <  10 

И на этот запрос Oracle выдает ошибку (ORA-00918: column ambiguously defined) - теперь ему разонравились одинаковые столбцы.

Как быть? Никто не сталкивался?
Спасибо.
...
Рейтинг: 0 / 0
Проблема при выборке с использованием SetMaxResults() (NHibernate 2.1.1.4000 + Oracle 11g)
    #37122977
barser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
barser,

другими словами, так работает:

Код: plaintext
select dummy as a, dummy as a from dual 

А вот так уже нет:

Код: plaintext
select * from (select dummy as a, dummy as a from dual) 

уже нет.

Вопрос: как в NHibernate заменить один из алиасов "a" на "b" (или вообще убрать его...)?
Желательно используя синтаксис критериев.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проблема при выборке с использованием SetMaxResults() (NHibernate 2.1.1.4000 + Oracle 11g)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]