2 つのテーブルがあり、両方のテーブルに存在する 2 つのフィールドを使用して、テーブル B で参照されているテーブル A からエントリを選択したいと考えています。
エントリを参照するために使用される 2 つのフィールドは数値であるため、次のクエリは私が望むことを実行します (ただし、乗算とテーブル 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 を使用しても可能ですか?