2014-02-20 6 views
0

Ниже представлен запрос sql, и я хочу, чтобы запрос hql для тех же самых предложений был бы оценен.!Запрос HQl запроса sql?

В этом запросе я пытаюсь извлечь записи из двух «блогов» и «аквеллов» из двух таблиц, которые не отображаются друг с другом.

SELECT blog_title as title ,created_date as date FROM blog UNION SELECT ask_question as title , created_on as date FROM askquestions) as aa ORDER BY date DESC 

ответ

0

, к сожалению, HQL не поддерживает UNION, UNION ALL как еще.

Вы все еще можете попробовать следующую работу вокруг:

// Create two query strings for two sub HQLs 
String firstHQLQueryStr = " from blog b where <criteria1>"; 
String secondHQLQueryStr = "from askquestions a where <criteria2>"; 

// Divide the two select clauses into two sub HQLs 
Query query1 = session.createQuery(firstHQLQueryStr); 
Query query2 = session.createQuery(secondHQLQueryStr); 

// Fetch the data from database using these two sub HQLs first 
List firstDataList= query1.list(); 
List secondDataList= query2.list(); 

//Combine the results 
firstDataList.add(secondDataList); 

// Collection equivalent to UNION ALL 
List nonUniqueCollection = firstDataList; 

//Collection equivalent to Union (as non-unique elements are removed) 
HashSet uniqueCollection = new HashSet(nonUniqueCollection); 

Надежда, что помогает.

+0

я думаю, таким образом, это не представляется возможным, потому что я хочу, чтобы напечатать список в соответствии с датой (Дата столбец существует в обеих таблицах) .И последнее один должен быть сначала печатаются, а остальные - позже. – User2413

+0

вполне правдоподобно, тогда нет другой альтернативы, к сожалению, поскольку она еще не добавлена ​​в качестве поддержки в HQL. И это также было поднято [здесь] (https://hibernate.onjira.com/browse/HHH-1050). –

0

Попробуйте, как это ...

select * from ((blog_title as title ,created_date as date FROM blog) union (SELECT ask_question as title , created_on as date FROM askquestions)) as a order by a.date desc; 
Смежные вопросы