NHibernate Выбрать в случае - PullRequest
       15

NHibernate Выбрать в случае

1 голос
/ 12 ноября 2009

У меня проблемы с запросом в NHibernate.

Исходный запрос SQL выглядит как

SELECT Id
  ,Table1_Id
  ,Table2_Id
  ,Table3_Id
FROM (
    SELECT Id
      ,Table1_Id
      ,Table2_Id
      ,Table3_Id
    FROM Table_123
    WHERE Table2_Id = 72

    UNION SELECT
      100 As Id
     ,151 As Table1_Id
     ,72 As Table2_Id
     ,20 As Table3_Id
) a
WHERE Table2_Id = 72

Мне нужен этот код, написанный в NHibernate.Criteria. Это возможно?

Greez Riyixy

1 Ответ

1 голос
/ 12 ноября 2009

Критерии и HQL не поддерживают Union https://www.hibernate.org/117.html#A21

Таким образом, вы не можете выполнить этот запрос, используя критерии / HQL в его текущей форме, но вы сможете использовать собственный SQL-запрос, подобный следующему:

IQuery sqlQuery = sess.CreateSQLQuery("select Id,Table1_Id....", "ClassName", typeof(ClassName));
sqlQuery.SetMaxResults(50);
IList entities = sqlQuery.List();

Для дальнейшего использования лучше сформулировать свои вопросы с использованием абстрактных типов. Table1 / Table2 / Table3 затрудняет понимание проблемы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...