2016-03-30 3 views
1

Я пытаюсь воссоздать следующий SQL-запрос в QueryDSL. Ниже приведен мой SQL-запрос, который в настоящее время работает как inteded.Подзапрос QueryDSL не работает

SELECT * FROM room x WHERE unit_id = (SELECT unit_id FROM room WHERE unit_id = x.unit_id GROUP BY unit_id HAVING(SUM(sqft) > 0)) 

Я пытаюсь написать запрос QueryDSL, который делает то же самое, но, честно говоря, не может прийти дальше, чем нижний запрос.

JPASubQuery subQuery = new JPASubQuery(); 
subQuery.from(qRoom).groupBy(qRoom.unit).having(qRoom.sqft.sum().goe(0)); 

JPAQuery unitquery = from(qRoom) 
    .where(qRoom.building.eq(building)).where(qRoom.unit.eq(subQuery)); 

return unitquery.list(qRoom); 

Вышеприведенный запрос не работает, и у меня возникли проблемы с использованием подзапросов в QueryDSL. Что я должен добавить/изменить, чтобы этот запрос работал?

+1

Вы встречая никаких сообщений об ошибках или, как вы знаете, что это не работает? – jojonas

+0

@jojonas мой подзапрос не возвращает единичный объект, также я не знаю, как использовать модуль из моего «основного» запроса в качестве единицы для моего подзапроса. – inControl

+0

Вы используете JPA? в какой персистентности? –

ответ

0

Исправлено.

мне просто нужно изменить .where(qRoom.unit.eq(subQuery)); слишком .where(qRoom.unit.in(subQuery.list(qRuimte.unit)));

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