我有两个表,我想使用两个表中存在的两个字段从表 A 中选择在表 B 中引用的条目。
用于引用条目的两个字段是数字的,因此以下查询可以满足我的要求(但由于乘法和表 B 很大,所以速度很慢)。
select * from TIBP
where IBP_CODE * 100 + IBP_BASE in
(select FZGLP_CODE * 100 + FZGLP_BASE from TFZGLP)
我已成功地将其映射到以下 HQL 命名查询:
<query name="findWhereReferencedInZglp">
select tibp
from TibpEntity as tibp
where tibp.code * 100 + tibp.base in
(select zglp.code * 100 + zglp.base from ZglpEntity as zglp)
</query>
为了提高上面的速度,我修改了SQL语句如下:
select * from TIBP as A,
(select distinct FZGLP_CODE, FZGLP_BASE from TFZGLP) as B
where A.IBP_CODE = B.FZGLP_CODE and A.IBP_BASE = B.FZGLP_BASE
遗憾的是,我还没有设法将其转换为可以解析的命名 HQL 查询。这甚至可以使用 HQL/Hibernate 吗?