如何将处理多个表的SQL嵌套查询转换为相应的HQL?

时间:2017-11-20 14:04:05

标签: java sql hibernate hql

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

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的任何映射类名称。请帮忙。

2 个答案:

答案 0 :(得分:0)

HQL无法这样做。

答案 1 :(得分:0)

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