2015-01-29 1 views
2
SELECT 
    supplier_id FROM suppliers UNION ALL 

SELECT  supplier_id FROM orders; 

Я просто создаю два критерия выше предложения «UNION ALL» и ниже предложение «UNION ALL» запроса.как выполнить запрос предложения union с критериями спящего режима api

но мой вопрос в том, как я выполняю условие UNION ALL в критериях? Спасибо заранее.

ответ

4

с критериями, я думаю, спящий режим не поддерживает UNION ALL, но вы можете использовать два критерий запроса, чтобы получить ожидаемый результат:

Criteria cr1 = session.createCriteria(Suppliers.class); 
cr1.setProjection(Projections.projectionList() 
    .add(Projections.property("supplier_id"), "supplier_id") 
); 
List results1 = cr1.list(); 

Criteria cr2 = session.createCriteria(Orders.class); 
cr2.setProjection(Projections.projectionList() 
    .add(Projections.property("supplier_id"), "supplier_id") 
); 
List results2 = cr2.list(); 

results1.add(results2); 

List unionAllList = results1; //this is the expected result. 
+1

Жаль, что не решает 'ORDER BY' проблемы, потому что вы можете использовать' ORDER BY' с 'UNION' (относится ко всем результатам объединения), но не с этим критерием. – Googie

+0

@Googie, вопрос не о _ORDER BY_, но даже если это было тогда, сортировка списка в java легко, OP может использовать другую коллекцию, такую ​​как набор деревьев или т. Д. Вместо списка только для сортировки результата – jfun

+0

да, я знаю , Я только что упомянул «ORDER BY», потому что у меня была эта проблема, и я пришел сюда, чтобы найти ответ. ** На всякий случай кто-то искал то же самое: ** Я справился с этим, создав представление в базе данных и создав объект, сопоставленный с этим представлением. Представление объединяет несвязанные объекты и возвращает идентификаторы обоих объектов, поэтому моя «объект представления» имеет эти обе сущности в качестве ассоциаций. – Googie

Смежные вопросы