如何将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_DATA
和 PC_PAYEE_BACKFILL_METADATA
假设任何映射 class 名称。请帮忙。
HQL 中没有办法这样做。
HQL支持select中的子查询,请参考这个,希望对你有帮助
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/queryhql.html#queryhql-subqueries
我有一个 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_DATA
和 PC_PAYEE_BACKFILL_METADATA
假设任何映射 class 名称。请帮忙。
HQL 中没有办法这样做。
HQL支持select中的子查询,请参考这个,希望对你有帮助 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/queryhql.html#queryhql-subqueries