HQLクエリをCriteriaAPIに変換したいのですが、Criteriaで同じことを記述できるかどうかわかりません。
HQLは次のようになります。
select distinct new DataTransferObject(property1, property2, ..., (select NVL(property3, null) from Table1 where property3 in elements(...) and ... ), property4, ..., (select .....), ...)
from Table2 as table2
left join table2.property5 as property5
(... more left joins ...)
where
.....
私は自分の基準を次のように書き始めました:
getSession().createCriteria(Table2.class, "table2")
.createAlias("table2.property5", "property5")
(...more createAlias...)
.add(Expression/Restriction
....
次に、それらを除くすべてのコンストラクター引数を使用してProjectionListを作成しました(select ...)。
そして最後に:
criteria.setProjection( projectionList).setResultTransformer( Transformers.aliasToBean(DataTransferObject.class) ) .list()
私の質問は、それらを(...を選択して)projectionListに追加する方法です????
私が達成しようとしているのは、where句ではなく、Criteria APIを使用してselect句(スカラーサブクエリ)でサブクエリを作成することです。