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