【发布时间】:2016-03-30 12:54:42
【问题描述】:
我正在尝试在 QueryDSL 中重新创建以下 SQL 查询。以下是我的 SQL 查询,目前正在按预期工作。
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 中使用子查询时遇到问题。我应该添加/更改什么才能使此查询正常工作?
【问题讨论】:
-
您是否遇到任何错误消息或您如何知道它不起作用?
-
@jojonas 我的子查询没有返回单位对象,而且,我不知道如何使用“主”查询中的单位作为子查询的单位。
-
您正在使用 JPA?哪个持久化框架?
-
你想创建一个原生 (sql) 查询?
-
@Meiko 不,我希望 JPAQuery 执行与所示 SQL 查询相同的操作,但我不知道具体如何