如何将SQL 多表嵌套查询转换为对应的HQL?

How to convert SQL nested query that deals with multiple tables to corresponding HQL?

我有一个 SQL 查询在 Java 中定义为:

String queryString =
        "select payee_id from ("
            + "select distinct d.company_name, d.business_type, d.service_type,m.payee_id "
            + " from BOOKER.PC_PAYEE_BACKFILL_DATA d, BOOKER.PC_PAYEE_BACKFILL_METADATA m "
            + " where d.DATA_RECORD_ID=m.DATA_RECORD_ID "
            + " and d.status = '"
            + PayeeBackfillStatus.VM_ACCEPTED
            + "' and d.canceled = '"
            + AppConstants.FALSE_CHAR
            + "' and d.wave_num = "
            + waveNumber
            + " ) "
            + "group by payee_id having count(*) > 1 ";

我需要将其转换为 HQL。但是 HQL 不支持内部查询。那么有什么可以替代的呢?一种方法是 运行 内部查询,然后使用 Java 的集合提取 payee_id。但这是一个解决方法。您可以为 PC_PAYEE_BACKFILL_DATAPC_PAYEE_BACKFILL_METADATA 假设任何映射 class 名称。请帮忙。

HQL 中没有办法这样做。

HQL支持select中的子查询,请参考这个,希望对你有帮助 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/queryhql.html#queryhql-subqueries