我有两个表,我想从表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吗?
答案 0 :(得分:0)
您是否尝试过使用内连接;类似于以下SQL:
select A.*,distinct B.FZGLP_CODE, B.FZGLP_BASE
from TFZGLP B
inner join TIBP A on A.IBP_CODE = B.FZGLP_CODE
where A.IBP_BASE = B.FZGLP_BASE
您可以轻松将其转换为休眠状态。