【问题标题】:QueryDSL subquery not workingQueryDSL 子查询不起作用
【发布时间】: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 查询相同的操作,但我不知道具体如何

标签: java mysql querydsl


【解决方案1】:

修复它。

我也只需要更改.where(qRoom.unit.eq(subQuery)); .where(qRoom.unit.in(subQuery.list(qRuimte.unit)));

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 2013-05-03
    • 2013-09-04
    • 2012-04-29
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2017-01-15
    相关资源
    最近更新 更多