我想将 HQL 查询转换为 Criteria API,但我不知道是否可以使用 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 ????
我试图实现的是在 select 子句(标量子查询)中进行子查询,而不是在 where 子句中,而是使用 Criteria API