Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate将两个critera查询合并为一个查询_Hibernate_Hibernate Criteria - Fatal编程技术网

Hibernate将两个critera查询合并为一个查询

Hibernate将两个critera查询合并为一个查询,hibernate,hibernate-criteria,Hibernate,Hibernate Criteria,我有以下两个查询,它们都查询同一个表。一个查询需要所有结果,第二个查询需要结果的子集。最后我需要两份清单。是否有方法将第一个查询与第二个查询共享 Criteria criteriaPrStatic = this.session.createCriteria(PurchaseRequest.class).add(Restrictions.eq("inactive", false)); //Would like to use first query again and add the

我有以下两个查询,它们都查询同一个表。一个查询需要所有结果,第二个查询需要结果的子集。最后我需要两份清单。是否有方法将第一个查询与第二个查询共享

    Criteria criteriaPrStatic = this.session.createCriteria(PurchaseRequest.class).add(Restrictions.eq("inactive", false));
    //Would like to use first query again and add the restrictions without having to query the table twice. 
    Criteria criteriaPrDynamic = this.session.createCriteria(PurchaseRequest.class).add(Restrictions.eq("inactive", false));
            criteriaPrDynamic.add(Restrictions.or(
                Restrictions.eq("creator", userInfo.getUser()),
                Restrictions.eq("authorizer", userInfo.getUser())
            ));

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.groupProperty("currentState"));
    projectionList.add(Projections.rowCount());

    criteriaPrStatic.setProjection(projectionList);
    criteriaPrDynamic.setProjection(projectionList);

你说的分享是什么意思?只让代码执行一次,或者只向db发出一个sql查询?@Thierry,向db发出一个sql查询,但返回一个带限制的列表和一个不带限制的列表。我甚至不确定这是否可行。你试过使用过滤器吗?您可以随时启用或禁用它。见此: