使用Criterion在Hibernate中嵌套查询

时间:2014-07-17 06:23:12

标签: java database hibernate criteria hibernate-criteria

我有一个以下查询,我必须从子查询创建的临时表中选择行。

select x, y, x 
from (select x, y, z from some_table where x between x1 and x2) 
where y like 'y1' 
order by z by desc

我必须使用Criteria从数据库中获取结果

我已经阅读了几个使用条件和分离标准处理子查询的示例和文档。我使用了Detached查询,但它没有达到目的,或者我错过了一些东西。

我使用了以下代码

    DetachedCriteria subCriteria =  
                      DetachedCriteria.forClass(SomeClass.class)
                     .add(Restrictions.between("x","x1","x2"))  
                     .setProjection(Projections.projectionList()
                     .add(Projections.property("x"))
                     .add(Projections.property("y"))
                     .add(Projections.property("z"));

   List<Object[]> results = session
                .createCriteria(Program.class)
                .add(Subqueries.exists(subCriteria))
                .add(Restrictions.like("y", "y1"))
                .addOrder(Order.desc("z")).list();

1 个答案:

答案 0 :(得分:3)

HQL或JPQL都不支持&#34;派生表格表达式&#34;。你可以使用子选择或in-selects,但那就是它。

这次你需要使用原生查询,而这实际上是正确的。当您想要获取实体而非预测时,HQL / JPQL非常有用。